//==================================================================
// Code generated automatically
// Description: Partition class body 
//==================================================================
#ifndef SATELLITE__testGEO_default_CPP
#define SATELLITE__testGEO_default_CPP

#include <SATELLITE.test+g+e+o.default.h>

SATELLITE__testGEO_default* SATELLITE__testGEO_default::s_current= NULL;

SATELLITE__testGEO_default::SATELLITE__testGEO_default(const char *mgr,const char *dirInstall,bool dmode):INTEG_simula(mgr,dirInstall,dmode)
{
m_infoLibraryName = "SATELLITE";
m_infoComponentName = "testGEO";
m_infoPartitionName = "default";
m_infoModelName = "SATELLITE__testGEO_default";
m_infoModelFileName = "SATELLITE.test+g+e+o.default";
m_infoModelFileNameExtra = "test+g+e+o.default";
m_perfFlag = false;
m_infoComponentDate = "17/01/2014 11:41:57.394000";
m_infoPartitionDate = "01/08/2014 10:04:58.101000";
m_programVersion= "EcosimPro V5.2.0";
m_libsVersion= "CONTROL V3.2 MATH V3.1.1 PORTS_LIB V1.1 SATELLITE V3.0 ";

m_solveInternalBox= new int[1]; 


m_boundaryBranch= new int[4];
int ib;
for (ib=0; ib < 4 ; ib++)
	m_boundaryBranch[ib]= 0;

m_branchZone= new int[46]; 
int nibr;
for (nibr=0; nibr < 46 ; nibr++)
	m_branchZone[nibr]= -1;

m_branchIf= new int[14]; 
int nif;
for (nif=0; nif < 14 ; nif++)
	m_branchIf[nif]= -1;

static const char * elmstr0[] = { "end_I", "end_PI", NULL } ;
static int elmind0[] = { 1, 2 } ;
static const char * elmstr1[] = { "Quaternion", "Cardan", NULL } ;
static int elmind1[] = { 1, 2 } ;
static const char * elmstr2[] = { "Xq", "Yq", "Zq", NULL } ;
static int elmind2[] = { 1, 2, 3 } ;
static const char * elmstr3[] = { "X", "Y", "Z", NULL } ;
static int elmind3[] = { 1, 2, 3 } ;
static const char * elmstr4[] = { "Xp", "Yp", "Zp", NULL } ;
static int elmind4[] = { 1, 2, 3 } ;
static const char * elmstr5[] = { "x", "y", "z", NULL } ;
static int elmind5[] = { 1, 2, 3 } ;
n_typ=6;
static struct INTEG_simula::etype tmp_typ[] = { 
		{elmstr0,2,elmind0},
		{elmstr1,2,elmind1},
		{elmstr2,3,elmind2},
		{elmstr3,3,elmind3},
		{elmstr4,3,elmind4},
		{elmstr5,3,elmind5}
	} ;
typ= new struct INTEG_simula::etype[6];
etypecopy(6,typ,tmp_typ);
n_dyn=27;
dyn= new double[27] ;
static double tmp_dynInit[27]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ;
dynInit= new double[27];
dcopy(27,dynInit,tmp_dynInit);


n_der=27;
der= new double[27] ;
static double tmp_derInit[27]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ;
derInit= new double[27];
dcopy(27,derInit,tmp_derInit);


res= new double[27] ;
ldr= new double[27] ;
boxDyn= new double[27] ;
boxDer= new double[27] ;

static int tmp_frozenVars[27] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0 } ;
frozenVars= new int[27];
icopy(27,frozenVars,tmp_frozenVars);

n_unkR=15487;
unkR= new double[15487] ;
static double tmp_unkRInit[15487]={ 0.1, 0.1, 0.1, 1, 1, 1, 0.1, 0.1, 0.1, 1, 1, 1, 0, 0, 0, 0, 
		0, 0, 0.1, 0.1, 0.1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 100000, 100000, 100000, -100000, -100000, -100000, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0010827, 6378137, 86164.09, 0, 0, 
		0, 1, 1, 0, 398600500000000., 4902000000000., 1.32715e+020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1197, 1685, 
		1269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		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, 1.15, 1, -1.75, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 35785825.62, 200000, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 90, -10000, -10000, -10000, 0, 0, 0, 1, 1, 1, 
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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.3, 1, 0, 0, 0, 1, 
		0, 0, 0, 1, 1, 1, 1, 10, 10, 10, 10, 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.01, 0, 0, 0, 0, 1, 0, 0, 0, 150000000000., 0, 
		0, 0, 0, 18.975, 18.975, 18.975, 18.975, 1, 0.2, 2, 0.7, 0, 0, 0, 0, 0, 
		0, 1, 0, 6.125, 1.15, 0, -6.125, 1.15, 0, 0, 1.15, 0, 0, 1.15, 0, 0, 
		0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 1, 0, 0, 1, 0, 
		1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 1375, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 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.24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0.733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.604, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		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, 0, 1.15, 0, 0.4, 1.15, -0.8, 0, 1.15, 
		0, -0.4, 1.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.07197, 0, 0, 
		0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 
		0, 0, 0, 0, 0, 0, 0.2527, 0.2508, 0.2527, 0.2508, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 889.3, 1456.5, 889.3, 1456.5, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 10, 10, 10, 10, 10, 
		10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 1.2, 0, 
		1.15, 1.2, 0, 1.15, 1.2, 0, 1.15, 1.2, 0, 1.15, 1.2, 0, 1.15, -1.2, 0, 1.15, 
		-1.2, 0, 1.15, -1.2, 0, 1.15, -1.2, 0, 1.15, -1.2, 0, 1.15, -0.1, 0.8, 0, 0.1, 
		0.8, 0, -0.1, -0.8, 0, 0.1, -0.8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 1, -1, 0, 0, -0.364, -1, 0, -0.364, 1, 0, -0.1, 0, -1, 
		-0.1, 0, 1, 1, 0, 0, 0.364, -1, 0, 0.364, 1, 0, 0.1, 0, -1, 0.1, 
		0, 1, 0, -0.364, 1, 0, -0.364, 1, 0, 0.364, 1, 0, 0.364, 1, 0, 0, 
		0, 0, 0, 0, 1, 0, 315, 280, 280, 280, 280, 280, 280, 280, 280, 280, 
		280, 280, 280, 280, 280, 280, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 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, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		0, 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.625, 1.625, 1.625, 1.625, 1.625, 1.625, 1.625, 
		1.625, 1.625, 1.625, 1.625, 1.625, 1.625, 1.625, 1.625, 1.625, 1.625, 0, 0, 0, 0, 0 } ;
unkRInit= new double[15487];
dcopy(15487,unkRInit,tmp_unkRInit);


n_cteR=8;
static double tmp_cteRInit[8]={ 3.14159265358979, 9.80665, 0, 0, 0, 1, 1, 1 } ;
cteR= tmp_cteRInit;

n_unkI=76;
unkI= new int[76] ;
static int tmp_unkIInit[76]={ 1, 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 } ;
unkIInit= new int[76];
icopy(76,unkIInit,tmp_unkIInit);


n_cteI=25;
static int tmp_cteIInit[25]={ 3, 3, 3, 3, 4, 4, 3, 3, 3, 15, 15, 15, 3, 3, 3, 3, 
		2, 15, 15, 15, 5, 4, 4, 15, 15 } ;
cteI= tmp_cteIInit;

n_unkS=2;
unkS= new std::string[2] ;
static std::string tmp_unkSInit[2]={ "20031986230500", "" } ;
unkSInit= new std::string[2];
{for (int i=0; i < 2; i++)
	unkSInit[i]= tmp_unkSInit[i];}

n_cteS=2;
static std::string tmp_cteSInit[2]={ "-", "s" } ;
cteS= &tmp_cteSInit[0];

n_unkT=0;

n_cteT=0;

IMETHOD= DASSL;
n_nelg= 246;
n_neld= 57;
m_numBoxes= 1;
restartB = 0 ;
s_current= this;
}

  // init internal partition models if used
void SATELLITE__testGEO_default::initInternalModels()
{
}

void SATELLITE__testGEO_default::A6a4c74738f880c9497ef79a2d5c26010(int n,double mat[],int nstart)
{
	int __cf0_mat;
	int _vi1;
	int _vi2;

	__cf0_mat = n ;
	_vi1 = nstart ;
	while ( _vi1 <= n ) {
	_vi2 = _vi1 + 1 ;
	while ( _vi2 <= n ) {
	mat[_vi1-1 + __cf0_mat*(_vi2-1)] = -mat[_vi2-1 + __cf0_mat*(_vi1-1)] ;
	_vi2 += 1 ;
	}
	_vi1 += 1 ;
	}
}


void SATELLITE__testGEO_default::A9c7f6750ad1855da473a532afaa051f0(double X[],double CMX[])
{
	int _vi3;

	_vi3 = 1 ;
	while ( _vi3 <= 3 ) {
	CMX[_vi3-1 + 3*(_vi3-1)] = 0 ;
	_vi3 += 1 ;
	}
	CMX[1 + 3*0] = -X[2] ;
	CMX[2 + 3*0] = X[1] ;
	CMX[2 + 3*1] = -X[0] ;
	A6a4c74738f880c9497ef79a2d5c26010(3, CMX, 1) ;
}


void SATELLITE__testGEO_default::A0daea1d810ae4f638e20557d22603a2f(int n17,double iV[],double iCMV[],int Index)
{
	double V[3];
	{int __i=0; for(; __i <3; __i++) V[__i] = 0.0; }
;
	double CMV[9];
	{int __i=0; for(; __i <9; __i++) CMV[__i] = 0.0; }
;
	int _vi4;
	int _vi5;
	int _vi6;

	_vi4 = 1 ;
	while ( _vi4 <= 3 ) {
	V[_vi4-1] = iV[_vi4-1 + 3*(Index-1)] ;
	_vi4 += 1 ;
	}
	A9c7f6750ad1855da473a532afaa051f0(V, CMV) ;
	_vi5 = 1 ;
	while ( _vi5 <= 3 ) {
	_vi6 = 1 ;
	while ( _vi6 <= 3 ) {
	iCMV[_vi6-1 + 3*(_vi5-1) + 9*(Index-1)] = CMV[_vi6-1 + 3*(_vi5-1)] ;
	_vi6 += 1 ;
	}
	_vi5 += 1 ;
	}
}


double SATELLITE__testGEO_default::A019bab5f04c67b2980e631858dd4b791(double X[],double Y[])
{

	return X[0] * Y[0] + X[1] * Y[1] + X[2] * Y[2] ;
}


double SATELLITE__testGEO_default::A37bff279528b6317bb6373d02308ca80(double X[])
{
	double X_module2 = 0.0;

	X_module2 = A019bab5f04c67b2980e631858dd4b791(X, X) ;
	if( X_module2 == 0 ) {
	return 0 ;
	}
	return _pow( X_module2 , 0.5,"X_module2 ** 0.5" ) ;
}


void SATELLITE__testGEO_default::A0635b7f593d6f049ce66caf057d49668(double Small,double RoundingErrorAcceptable,std::string Message)
{

	if( abs(Small) > RoundingErrorAcceptable ) {
	PRINT(asString(Message)) ;
	PRINT(" --------------error= " + asString(Small) + ", rounding only up to " + asString(RoundingErrorAcceptable) + " at Time=" + getValueAsString("TIME")) ;
	}
}


void SATELLITE__testGEO_default::A142a138dd7f7edde3cd3b31f7c280be6(double X[],double eX[],std::string Message)
{
	double X_module2 = 0.7;
	double checknorm = 0.7;
	double eX_module2 = 0.7;
	double XsumAbs = 1.;
	int _vi7;
	int _vi8;
	double _vr1;

	_vr1 = 0 ;
	_vi7 = 1 ;
	while ( _vi7 <= 3 ) {
	_vr1 += abs(X[_vi7-1]) ;
	_vi7 += 1 ;
	}
	XsumAbs = _vr1 ;
	X_module2 = A019bab5f04c67b2980e631858dd4b791(X, X) ;
	_vi8 = 1 ;
	while ( _vi8 <= 3 ) {
	if( X_module2 == 0 ) {
	eX[_vi8-1] = X[_vi8-1] ;
	}
	else {
	eX[_vi8-1] = _div( X[_vi8-1] , _sqrt(X_module2,"X_module2"),"sqrt(X_module2)") ;
	}
	_vi8 += 1 ;
	}
	if( X_module2 == 0 ) {
	PRINT("ERROR Normalise NULL vector for " + asString(Message) + " at Time=" + getValueAsString("TIME") + "   X=" + asString(XsumAbs)) ;
	}
	else {
	if( abs(A37bff279528b6317bb6373d02308ca80(eX)) > 1 ) {
	A0635b7f593d6f049ce66caf057d49668(A37bff279528b6317bb6373d02308ca80(eX) - 1., 1e-008, concatStrings("ERROR Normalise for ", Message)) ;
	}
	}
	return  ;
}


void SATELLITE__testGEO_default::A7ad3331810bc4d38a98d3684189d2da1(int n,double X[],double eX[],int Index,std::string Message)
{
	double V[3];
	{int __i=0; for(; __i <3; __i++) V[__i] = 0.0; }
;
	double eV[3];
	{int __i=0; for(; __i <3; __i++) eV[__i] = 0.0; }
;
	int _vi10;
	int _vi9;

	_vi9 = 1 ;
	while ( _vi9 <= 3 ) {
	V[_vi9-1] = X[_vi9-1 + 3*(Index-1)] ;
	_vi9 += 1 ;
	}
	A142a138dd7f7edde3cd3b31f7c280be6(V, eV, Message) ;
	_vi10 = 1 ;
	while ( _vi10 <= 3 ) {
	eX[_vi10-1 + 3*(Index-1)] = eV[_vi10-1] ;
	_vi10 += 1 ;
	}
}


std::string SATELLITE__testGEO_default::A718f4ee7a90c61514c3a9ceddb91063c(int n,double signal[])
{
	std::string Event = "";
	double ii = 0.0;
	int _vi11;

	_vi11 = 1 ;
	while ( _vi11 <= n ) {
	if( signal[_vi11-1] == 1 ) {
	ii = _vi11 ;
	Event = concatStrings(concatStrings(Event, " "), realToString(ii, 15)) ;
	}
	_vi11 += 1 ;
	}
	return Event ;
}


double SATELLITE__testGEO_default::Ad45541ad370065f0c89d5eceabfbe70b(double radians)
{

	return radians/cteR[0] * 180 ;
}


double SATELLITE__testGEO_default::A3f5f23a7a3907152dae2b7f68f204c63(double radians,int flag180)
{
	double deg_full = 0.0;
	int deg_modulo = 0;

	deg_full = Ad45541ad370065f0c89d5eceabfbe70b(radians) ;
	deg_modulo = deg_full/360 ;
	if( deg_modulo < 0 ) {
	deg_modulo = deg_modulo - 1 ;
	}
	if( (deg_full - deg_modulo * 360) > 180 && flag180 ) {
	return deg_full - deg_modulo * 360 - 360 ;
	}
	return deg_full - deg_modulo * 360 ;
}


void SATELLITE__testGEO_default::A34abf7295c90f8265a8f8233dbb2a37e(double a,double X[],double b,double Y[],double c,double aXplusbYplusc[])
{
	int _vi20;

	_vi20 = 1 ;
	while ( _vi20 <= 3 ) {
	aXplusbYplusc[_vi20-1] = a * X[_vi20-1] + b * Y[_vi20-1] + c ;
	_vi20 += 1 ;
	}
}


void SATELLITE__testGEO_default::A0f35e143d3a4ca8a6d524c3bd6aa862c(double a,double X[],double b,double aXplusb[])
{
	int _vi21;

	_vi21 = 1 ;
	while ( _vi21 <= 3 ) {
	aXplusb[_vi21-1] = a * X[_vi21-1] + b ;
	_vi21 += 1 ;
	}
}


double SATELLITE__testGEO_default::A01bfbe1edd393b2c1ca09d44c931495b(double degrees)
{

	return degrees * cteR[0]/180 ;
}


void SATELLITE__testGEO_default::A5b9efacac279f8201146501a406519f9(double RSatSun[],double RSatEarth[],int * FlagEclipse,double * FractionSun)
{
	double Rearth = 6378137.;
	double Hatmosphere = 0.;
	double Rsun = 695216933.;
	double halfconed = 0.;
	double angled = 0.;
	double angleAtConed = 0.;
	double RearthSun[3];
	{int __i=0; for(; __i <3; __i++) RearthSun[__i] = 0.0; }
;
	double RConeEarth[3];
	{int __i=0; for(; __i <3; __i++) RConeEarth[__i] = 0.0; }
;
	double RConeSat[3];
	{int __i=0; for(; __i <3; __i++) RConeSat[__i] = 0.0; }
;
	double halfconedTot = 0.0;
	double angleAtConedTot = 0.0;
	double halfconedLimit = 0.0;

	angled = A3f5f23a7a3907152dae2b7f68f204c63(_acos(_div( _div( A019bab5f04c67b2980e631858dd4b791(RSatSun, RSatEarth) , A37bff279528b6317bb6373d02308ca80(RSatSun),"SATELLITE.Norm(RSatSun)") , A37bff279528b6317bb6373d02308ca80(RSatEarth),"SATELLITE.Norm(RSatEarth)"),"SATELLITE.XscalarY(RSatSun, RSatEarth) / SATELLITE.Norm(RSatSun) / SATELLITE.Norm(RSatEarth)"), 0) ;
	*FractionSun = 1 ;
	if( angled > 90 ) {
	*FlagEclipse = 0 ;
	return  ;
	}
	A34abf7295c90f8265a8f8233dbb2a37e(-1, RSatEarth, 1, RSatSun, 0, RearthSun) ;
	halfconed = A3f5f23a7a3907152dae2b7f68f204c63(atan(_div( (Rsun - (Rearth + Hatmosphere)) , A37bff279528b6317bb6373d02308ca80(RearthSun),"SATELLITE.Norm(RearthSun)")), 0) ;
	A0f35e143d3a4ca8a6d524c3bd6aa862c(_div( _div( -(Rearth + Hatmosphere) , tan(A01bfbe1edd393b2c1ca09d44c931495b(halfconed)),"tan(SATELLITE.rad(halfconed))") , A37bff279528b6317bb6373d02308ca80(RearthSun),"SATELLITE.Norm(RearthSun)"), RearthSun, 0, RConeEarth) ;
	A34abf7295c90f8265a8f8233dbb2a37e(-1, RSatEarth, 1, RConeEarth, 0, RConeSat) ;
	angleAtConed = A3f5f23a7a3907152dae2b7f68f204c63(_acos(_div( _div( A019bab5f04c67b2980e631858dd4b791(RConeSat, RConeEarth) , A37bff279528b6317bb6373d02308ca80(RConeSat),"SATELLITE.Norm(RConeSat)") , A37bff279528b6317bb6373d02308ca80(RConeEarth),"SATELLITE.Norm(RConeEarth)"),"SATELLITE.XscalarY(RConeSat, RConeEarth) / SATELLITE.Norm(RConeSat) / SATELLITE.Norm(RConeEarth)"), 0) ;
	if( angleAtConed <= halfconed ) {
	*FlagEclipse = 1 ;
	*FractionSun = 0 ;
	return  ;
	}
	*FlagEclipse = 0 ;
	return  ;
}


double SATELLITE__testGEO_default::Ad5577fc29943618f69ad5c843eba833c(double x,double y)
{

	if( x > y ) {
	return x ;
	}
	return y ;
}


void SATELLITE__testGEO_default::A2e8f4393cd4e00e633246fcac8ad105e(double X[],double Y[],double XxY[])
{
	double CMX[9];
	{int __i=0; for(; __i <9; __i++) CMX[__i] = 0.0; }
;
	int _vi22;
	int _vi23;
	double _vr3;

	A9c7f6750ad1855da473a532afaa051f0(X, CMX) ;
	_vi22 = 1 ;
	while ( _vi22 <= 3 ) {
	_vr3 = 0 ;
	_vi23 = 1 ;
	while ( _vi23 <= 3 ) {
	_vr3 += CMX[_vi23-1 + 3*(_vi22-1)] * Y[_vi23-1] ;
	_vi23 += 1 ;
	}
	XxY[_vi22-1] = _vr3 ;
	_vi22 += 1 ;
	}
}


void SATELLITE__testGEO_default::A0d2cf00462b54839a48b1dc17df854a3(double Ixxyyzz[],double Ixyyzzx[],double InertiaMatrixSatFrozen[])
{

	InertiaMatrixSatFrozen[0 + 3*0] = Ixxyyzz[0] ;
	InertiaMatrixSatFrozen[1 + 3*1] = Ixxyyzz[1] ;
	InertiaMatrixSatFrozen[2 + 3*2] = Ixxyyzz[2] ;
	InertiaMatrixSatFrozen[1 + 3*0] = -Ixyyzzx[0] ;
	InertiaMatrixSatFrozen[2 + 3*1] = -Ixyyzzx[1] ;
	InertiaMatrixSatFrozen[0 + 3*2] = -Ixyyzzx[2] ;
	InertiaMatrixSatFrozen[0 + 3*1] = InertiaMatrixSatFrozen[1 + 3*0] ;
	InertiaMatrixSatFrozen[2 + 3*0] = InertiaMatrixSatFrozen[0 + 3*2] ;
	InertiaMatrixSatFrozen[1 + 3*2] = InertiaMatrixSatFrozen[2 + 3*1] ;
}


void SATELLITE__testGEO_default::A258ec9a890dd211ddeef7f6b9d43979a(double InertiaMatrix[],double Rdisplaced[],double Mass,double InertiaMatrixD[],int FromCOMNotToCOM)
{
	double RRIdent3[9];
	{int __i=0; for(; __i <9; __i++) RRIdent3[__i] = 0.; }
;
	double Idelta[9];
	{int __i=0; for(; __i <9; __i++) Idelta[__i] = 0.0; }
;
	double RR2 = 0.0;
	double RRdisplaced[3];
	{int __i=0; for(; __i <3; __i++) RRdisplaced[__i] = 0.0; }
;
	int _vi25;
	int _vi26;
	int _vi27;
	int _vi28;
	int _vi29;
	int _vi30;
	int _vi31;
	int _vi32;
	double _vr4;

	_vi25 = 1 ;
	while ( _vi25 <= setofSize(&typ[5]) ) {
	_vi26 = setofElem(&typ[5], _vi25) ;
	if( FromCOMNotToCOM ) {
	RRdisplaced[_vi25-1] = Rdisplaced[_vi25-1] ;
	}
	else {
	RRdisplaced[_vi25-1] = -Rdisplaced[_vi25-1] ;
	}
	_vi25 += 1 ;
	}
	_vr4 = 0 ;
	_vi27 = 1 ;
	while ( _vi27 <= setofSize(&typ[5]) ) {
	_vi28 = setofElem(&typ[5], _vi27) ;
	_vr4 += _pow( RRdisplaced[_vi27-1] , 2.,"RRdisplaced[_vi27] ** 2." ) ;
	_vi27 += 1 ;
	}
	RR2 = _vr4 ;
	_vi29 = 1 ;
	while ( _vi29 <= setofSize(&typ[5]) ) {
	_vi30 = setofElem(&typ[5], _vi29) ;
	_vi31 = 1 ;
	while ( _vi31 <= setofSize(&typ[5]) ) {
	_vi32 = setofElem(&typ[5], _vi31) ;
	if( _vi32 == _vi30 ) {
	RRIdent3[_vi31-1 + 3*(_vi29-1)] = RR2 ;
	}
	Idelta[_vi31-1 + 3*(_vi29-1)] = Mass * (RRIdent3[_vi31-1 + 3*(_vi29-1)] - RRdisplaced[_vi29-1] * RRdisplaced[_vi31-1]) ;
	if( FromCOMNotToCOM ) {
	InertiaMatrixD[_vi31-1 + 3*(_vi29-1)] = InertiaMatrix[_vi31-1 + 3*(_vi29-1)] + Idelta[_vi31-1 + 3*(_vi29-1)] ;
	}
	else {
	InertiaMatrixD[_vi31-1 + 3*(_vi29-1)] = InertiaMatrix[_vi31-1 + 3*(_vi29-1)] - Idelta[_vi31-1 + 3*(_vi29-1)] ;
	}
	_vi31 += 1 ;
	}
	_vi29 += 1 ;
	}
}


int SATELLITE__testGEO_default::A9e9021524afdf84d19ddc06b9483eb75(double Real)
{
	int i = 0;

	i = Real ;
	if( Real < 0 && i != Real ) {
	return Real + 1 ;
	}
	return Real ;
}


double SATELLITE__testGEO_default::Abae57cbe2695639296453083e5154d0e(std::string DDMMYYYYHHMMSS,double * Day1900)
{
	int Day = 0;
	int Month = 0;
	int Year = 0;
	int Hour = 0;
	int Minute = 0;
	int Second = 0;
	double v1 = 0.0;
	double v2 = 0.0;
	int a = 0;
	int y = 0;
	int m = 0;
	int BC = 0;
	double JD = 0.;
	double JD1900 = 2415020.5;

	v1 = stringToReal(DDMMYYYYHHMMSS) ;
	if( v1 < 0 ) {
	BC = 1 ;
	v1 = abs(v1) ;
	}
	Day = v1/1000000000000. ;
	Month = (v1 - Day * 1000000000000.)/10000000000. ;
	Year = (v1 - Day * 1000000000000. - Month * 10000000000.)/1000000 ;
	if( BC == 1 ) {
	Year = -Year ;
	}
	v2 = v1 - Day * 1000000000000. - Month * 10000000000. - Year * 1000000. ;
	Hour = v2/10000 ;
	Minute = (v2 - Hour * 10000)/100 ;
	Second = v2 - Hour * 10000 - Minute * 100 ;
	a = A9e9021524afdf84d19ddc06b9483eb75((14 - Month)/12) ;
	y = Year + 4800 - a ;
	m = Month + 12 * a - 3 ;
	JD = Day + A9e9021524afdf84d19ddc06b9483eb75((153 * m + 2)/5) + 365. * y + A9e9021524afdf84d19ddc06b9483eb75(y/4) - A9e9021524afdf84d19ddc06b9483eb75(y/100) + A9e9021524afdf84d19ddc06b9483eb75(y/400) - 32045. + (Hour - 12.)/24. + Minute/1440. + Second/86400. ;
	if( (Day/10000 + Month/100 + Year) <= 1582.1004 ) {
	JD = JD + 10. ;
	}
	if( (Day/10000 + Month/100 + Year) > 1582.1004 && (Day/10000 + Month/100 + Year) <= 1582.1014 ) {
	PRINT("minor error: the given date is not belonging to the Gregorian calendar") ;
	}
	*Day1900 = JD - JD1900 ;
	return JD ;
}


void SATELLITE__testGEO_default::Afcc4eadac593fa8a73a0762b2622034c(double JD,double ReMo[],double ReS[])
{
	double L0[25];
	{int __i=0; for(; __i <25; __i++) L0[__i] = 0.0; }
;
	double Lp[25];
	{int __i=0; for(; __i <25; __i++) Lp[__i] = 0.0; }
;
	double aMajorsp[25];
	{int __i=0; for(; __i <25; __i++) aMajorsp[__i] = 0.0; }
;
	double om0[17];
	{int __i=0; for(; __i <17; __i++) om0[__i] = 0.0; }
;
	double omP[17];
	{int __i=0; for(; __i <17; __i++) omP[__i] = 0.0; }
;
	double OM0[17];
	{int __i=0; for(; __i <17; __i++) OM0[__i] = 0.0; }
;
	double OMp[17];
	{int __i=0; for(; __i <17; __i++) OMp[__i] = 0.0; }
;
	double exc[17];
	{int __i=0; for(; __i <17; __i++) exc[__i] = 0.0; }
;
	double incl[17];
	{int __i=0; for(; __i <17; __i++) incl[__i] = 0.0; }
;
	double IterationKeplersp[25];
	{int __i=0; for(; __i <25; __i++) IterationKeplersp[__i] = 0.0; }
;
	double DiamKm[25];
	{int __i=0; for(; __i <25; __i++) DiamKm[__i] = 0.0; }
;
	double M0[25];
	{int __i=0; for(; __i <25; __i++) M0[__i] = 0.0; }
;
	double A0[25];
	{int __i=0; for(; __i <25; __i++) A0[__i] = 0.0; }
;
	double B0[25];
	{int __i=0; for(; __i <25; __i++) B0[__i] = 0.0; }
;
	double C0[25];
	{int __i=0; for(; __i <25; __i++) C0[__i] = 0.0; }
;
	double FoyerSatellites[25];
	{int __i=0; for(; __i <25; __i++) FoyerSatellites[__i] = 0.0; }
;
	double RsMoEcliptic[3];
	{int __i=0; for(; __i <3; __i++) RsMoEcliptic[__i] = 0.0; }
;
	double RsEEcliptic[3];
	{int __i=0; for(; __i <3; __i++) RsEEcliptic[__i] = 0.0; }
;
	double ReMoEcliptic[3];
	{int __i=0; for(; __i <3; __i++) ReMoEcliptic[__i] = 0.0; }
;
	double ReSEcliptic[3];
	{int __i=0; for(; __i <3; __i++) ReSEcliptic[__i] = 0.0; }
;
	double PI = 3.141592653589;
	double AU = 149597870000.;
	double JDbouiges = 0.0;
	double omB = 0.0;
	double LorbitalSun = 0.0;
	double MorbitalSun = 0.0;
	double l = 0.0;
	double OM = 0.0;
	double M = 0.0;
	double Diff = 0.0;
	double F = 0.0;
	double Ms = 0.0;
	double b = 0.0;
	double LongOrb = 0.0;
	double v = 0.0;
	double u = 0.0;
	double LtildaVraie = 0.0;
	double Ltilda = 0.0;
	double lh = 0.0;
	double Bs = 0.0;
	double Rs = 0.0;
	double parallaxe = 0.0;
	int i = 0;
	double CosAngle = 0.0;
	double SinAngle = 0.0;
	int _vi33;
	int _vi34;

	JDbouiges = JD - 694325. - 1721059.5 ;
	i = 3 ;
	L0[i-1] = 4.8689 ;
	Lp[i-1] = 0.0172027914 ;
	om0[i-1] = 4.9085 ;
	omP[i-1] = 8.1856e-007 ;
	OM0[i-1] = 0 ;
	OMp[i-1] = 0 ;
	exc[i-1] = 0.01675104 ;
	incl[i-1] = 0 ;
	aMajorsp[i-1] = 1.00000023 ;
	IterationKeplersp[i-1] = 3 ;
	omB = om0[2] + omP[2] * JDbouiges ;
	LorbitalSun = L0[2] + Lp[2] * JDbouiges ;
	MorbitalSun = L0[2] + Lp[2] * JDbouiges - omB ;
	l = 0.57999 + 0.229971503 * JDbouiges ;
	OM = 4.1867 - 0.00092422 * JDbouiges ;
	M = 0.3193 + 0.228027133 * JDbouiges ;
	Diff = l - LorbitalSun ;
	F = l - OM ;
	Ms = MorbitalSun ;
	l = l + 0.1098 * sin(M) + 0.003728 * sin(2. * M) + 0.01149 * sin(2. * Diff) ;
	l = l - 0.003329 * sin(Ms) + 0.02224 * sin(2. * Diff - M) - 0.001945 * sin(2. * F) ;
	l = l + 0.001026 * sin(2. * Diff - 2. * M) + 0.0009983 * sin(2. * Diff - M - Ms) ;
	l = l + 0.0009903 * sin(2. * Diff + M) + 0.0008011 * sin(2. * Diff - Ms) ;
	l = l + 0.0007156 * sin(M - Ms) - 0.0005323 * sin(M + Ms) - 0.0006074 * sin(Diff) ;
	b = 0.08995 * sin(F) + 0.0049 * sin(M + F) + 0.00485 * sin(M - F) + 0.003 * sin(2. * Diff - F) ;
	b = b + 0.00097 * sin(2. * Diff - M + F) + 0.0008 * sin(2. * Diff - M - F) + 0.00057 * sin(2. * Diff + F) ;
	parallaxe = 0.9508 + 0.0518 * cos(M) ;
	Rs = _div( 6378137. , sin(A01bfbe1edd393b2c1ca09d44c931495b(parallaxe)),"sin(SATELLITE.rad(parallaxe))") ;
	ReMoEcliptic[0] = Rs * cos(b) * cos(l) ;
	ReMoEcliptic[1] = Rs * cos(b) * sin(l) ;
	ReMoEcliptic[2] = Rs * sin(b) ;
	omB = om0[2] + omP[2] * JDbouiges ;
	LongOrb = LorbitalSun ;
	M = MorbitalSun ;
	u = M ;
	_vi33 = 0 ;
	while ( _vi33 <= (IterationKeplersp[2] * 2) ) {
	u = M + exc[2] * sin(u) ;
	_vi33 += 1 ;
	}
	v = 2. * atan(tan(u/2.) * _sqrt(_div( (1. + exc[2]) , (1. - exc[2]),"1. - exc[03]"),"(1. + exc[03]) / (1. - exc[03])")) ;
	OM = OM0[2] + OMp[2] * JDbouiges ;
	LtildaVraie = v + omB - OM ;
	if( cos(LtildaVraie) == 0 ) {
	Ltilda = LtildaVraie ;
	}
	else {
	Ltilda = atan(tan(LtildaVraie) * cos(incl[2])) ;
	if( cos(LtildaVraie) < 0 ) {
	Ltilda = Ltilda + PI ;
	}
	}
	lh = Ltilda + OM ;
	lh = lh + PI ;
	Bs = atan(sin(Ltilda) * tan(incl[2])) ;
	Rs = AU * aMajorsp[2] * (1. - exc[2] * cos(u)) ;
	RsEEcliptic[0] = Rs * cos(Bs) * cos(lh) ;
	RsEEcliptic[1] = Rs * cos(Bs) * sin(lh) ;
	RsEEcliptic[2] = Rs * sin(Bs) ;
	_vi34 = 1 ;
	while ( _vi34 <= 3 ) {
	RsMoEcliptic[_vi34-1] = ReMoEcliptic[_vi34-1] + RsEEcliptic[_vi34-1] ;
	ReSEcliptic[_vi34-1] = -RsEEcliptic[_vi34-1] ;
	_vi34 += 1 ;
	}
	CosAngle = cos(A01bfbe1edd393b2c1ca09d44c931495b(23.45)) ;
	SinAngle = sin(A01bfbe1edd393b2c1ca09d44c931495b(23.45)) ;
	ReS[0] = ReSEcliptic[0] ;
	ReS[1] = ReSEcliptic[1] * CosAngle - ReSEcliptic[2] * SinAngle ;
	ReS[2] = ReSEcliptic[1] * SinAngle + ReSEcliptic[2] * CosAngle ;
	ReMo[0] = ReMoEcliptic[0] ;
	ReMo[1] = ReMoEcliptic[1] * CosAngle - ReMoEcliptic[2] * SinAngle ;
	ReMo[2] = ReMoEcliptic[1] * SinAngle + ReMoEcliptic[2] * CosAngle ;
	return  ;
}


void SATELLITE__testGEO_default::A8ca45943fd19cec75139673798d21140(double Anglerad,double Xa,double Ya,double * xb,double * yb)
{
	double CosAngle = 0.0;
	double SinAngle = 0.0;

	CosAngle = cos(Anglerad) ;
	SinAngle = sin(Anglerad) ;
	*xb = Xa * CosAngle - Ya * SinAngle ;
	*yb = Xa * SinAngle + Ya * CosAngle ;
}


void SATELLITE__testGEO_default::A8dc12acf768e6b12ebd39f2d10517c82(double CoordInA[],double PrecessionZB,double NutationU,double RotationZA,double CoordInB[])
{
	double Uu = 0.0;
	double vv = 0.0;
	double Tau = 0.0;

	A8ca45943fd19cec75139673798d21140(RotationZA, CoordInA[0], CoordInA[1], &Uu, &vv) ;
	A8ca45943fd19cec75139673798d21140(NutationU, vv, CoordInA[2], &Tau, &CoordInB[2]) ;
	A8ca45943fd19cec75139673798d21140(PrecessionZB, Uu, Tau, &CoordInB[0], &CoordInB[1]) ;
}


void SATELLITE__testGEO_default::Aa5177a69817eb905f83f68ee777fe529(double CoordOrbitalPolar[],double Precession,double Nutation,double Rotation,double CoordECI[])
{

	A8dc12acf768e6b12ebd39f2d10517c82(CoordOrbitalPolar, Precession, Nutation, Rotation, CoordECI) ;
}


void SATELLITE__testGEO_default::A76451021569370217d096290951c830e(double altPer_o,double altApo_o,double OM_o,double inc_o,double om_o,double PHI_o,double R_o[],double V_o[],double error[])
{
	double EarthR = 6378137.;
	double GMEarth = 398600500000000.;
	double LocalOrbitalPolar[3];
	{int __i=0; for(; __i <3; __i++) LocalOrbitalPolar[__i] = 0.0; }
;
	double Rrr[3];
	{int __i=0; for(; __i <3; __i++) Rrr[__i] = 0.0; }
;
	double Vvv[3];
	{int __i=0; for(; __i <3; __i++) Vvv[__i] = 0.0; }
;
	double exc = 0.0;
	double sma = 0.0;
	double Wenergy = 0.0;
	double C_orbit = 0.0;
	double p_orbit = 0.0;
	double r_module = 0.0;
	double V_module = 0.0;
	double v_theta = 0.0;
	double v_radial = 0.0;
	double theta_o = 0.0;
	double checkv = 0.0;
	double checkr = 0.0;
	double checkvv = 0.0;

	error[0] = 0 ;
	error[1] = 0 ;
	error[2] = 0 ;
	error[3] = 0 ;
	exc = _div( abs(altApo_o - altPer_o) , (altApo_o + EarthR + altPer_o + EarthR),"altApo_o + EarthR + altPer_o + EarthR") ;
	sma = (altApo_o + EarthR + altPer_o + EarthR)/2. ;
	Wenergy = _div( -GMEarth , (2. * sma),"2. * sma") ;
	C_orbit = _sqrt((1. - _pow( exc , 2.,"exc ** 2." )) * sma * GMEarth,"(1. - exc ** 2.) * sma * GMEarth") ;
	p_orbit = _div( _pow( C_orbit , 2.,"C_orbit ** 2." ) , GMEarth,"GMEarth") ;
	r_module = _div( p_orbit , (1. + exc * cos(A01bfbe1edd393b2c1ca09d44c931495b(PHI_o))),"1. + exc * cos(SATELLITE.rad(PHI_o))") ;
	V_module = _sqrt(2. * (Wenergy + _div( GMEarth , r_module,"r_module")),"2. * (Wenergy + GMEarth / r_module)") ;
	v_theta = _div( C_orbit , r_module,"r_module") ;
	v_radial = _div( GMEarth , C_orbit,"C_orbit") * exc * sin(A01bfbe1edd393b2c1ca09d44c931495b(PHI_o)) ;
	checkv = V_module - _sqrt(_pow( v_theta , 2.,"v_theta ** 2." ) + _pow( v_radial , 2.,"v_radial ** 2." ),"v_theta ** 2. + v_radial ** 2.") ;
	if( abs(checkv) > 0 ) {
	A0635b7f593d6f049ce66caf057d49668(checkv, 1e-010, "ERROR ParametersToCartesian 1 for V") ;
	}
	if( abs(checkv) > 0.001 ) {
	error[1] = checkv ;
	}
	LocalOrbitalPolar[0] = r_module ;
	LocalOrbitalPolar[1] = 0 ;
	LocalOrbitalPolar[2] = 0 ;
	Aa5177a69817eb905f83f68ee777fe529(LocalOrbitalPolar, A01bfbe1edd393b2c1ca09d44c931495b(OM_o), A01bfbe1edd393b2c1ca09d44c931495b(inc_o), A01bfbe1edd393b2c1ca09d44c931495b(om_o + PHI_o), R_o) ;
	LocalOrbitalPolar[0] = v_radial ;
	LocalOrbitalPolar[1] = v_theta ;
	LocalOrbitalPolar[2] = 0 ;
	Aa5177a69817eb905f83f68ee777fe529(LocalOrbitalPolar, A01bfbe1edd393b2c1ca09d44c931495b(OM_o), A01bfbe1edd393b2c1ca09d44c931495b(inc_o), A01bfbe1edd393b2c1ca09d44c931495b(om_o + PHI_o), V_o) ;
	checkr = r_module - A37bff279528b6317bb6373d02308ca80(R_o) ;
	if( abs(checkr) > 0 ) {
	A0635b7f593d6f049ce66caf057d49668(checkr, 1e-007, "ERROR ParametersToCartesian 2 fro R") ;
	}
	if( abs(checkr) > 0.001 ) {
	error[2] = checkr ;
	}
	checkvv = V_module - A37bff279528b6317bb6373d02308ca80(V_o) ;
	if( abs(checkvv) > 0 ) {
	A0635b7f593d6f049ce66caf057d49668(checkvv, 1e-010, "ERROR ParametersToCartesian 3 for V") ;
	}
	if( abs(checkvv) > 0.001 ) {
	error[3] = checkvv ;
	}
	error[0] = error[1] + error[2] + error[3] ;
}


void SATELLITE__testGEO_default::Af092bb27d524bbfb4d110dd5afc6a37f(double Q[],std::string Message)
{
	double NormQ = 0.0;
	int ii = 0;
	int _vi35;

	NormQ = _sqrt(_pow( Q[0] , 2.,"Q[1] ** 2." ) + _pow( Q[1] , 2.,"Q[2] ** 2." ) + _pow( Q[2] , 2.,"Q[3] ** 2." ) + _pow( Q[3] , 2.,"Q[4] ** 2." ),"Q[1] ** 2. + Q[2] ** 2. + Q[3] ** 2. + Q[4] ** 2.") ;
	if( NormQ == 0 ) {
	PRINT("******************************************ERREUR NULL Quaternion  for " + asString(Message) + " at Time=" + getValueAsString("TIME")) ;
	return  ;
	}
	if( abs(NormQ - 1.) > 0 ) {
	A0635b7f593d6f049ce66caf057d49668(NormQ - 1., 0.001, concatStrings("mastered not unit Quaternion for ", Message)) ;
	}
	_vi35 = 1 ;
	while ( _vi35 <= 4 ) {
	Q[_vi35-1] = _div( Q[_vi35-1] , NormQ,"NormQ") ;
	_vi35 += 1 ;
	}
}


void SATELLITE__testGEO_default::Acdc743b4ce17098cd2fcaf4eab2b6e76(double Q[],double QMX[])
{
	int _vi36;
	int _vi37;

	_vi36 = 1 ;
	while ( _vi36 <= 4 ) {
	QMX[_vi36-1 + 4*(_vi36-1)] = Q[0] ;
	_vi36 += 1 ;
	}
	_vi37 = 2 ;
	while ( _vi37 <= 4 ) {
	QMX[_vi37-1 + 4*0] = -Q[_vi37-1] ;
	_vi37 += 1 ;
	}
	QMX[2 + 4*1] = -Q[3] ;
	QMX[3 + 4*1] = Q[2] ;
	QMX[3 + 4*2] = -Q[1] ;
	A6a4c74738f880c9497ef79a2d5c26010(4, QMX, 1) ;
}


void SATELLITE__testGEO_default::A56574614adcf365a4620cd0f26dcfbe7(double Q1[],double Q2[],double Q1Q2[],std::string Message)
{
	double QMX[16];
	{int __i=0; for(; __i <16; __i++) QMX[__i] = 0.0; }
;
	double Error = 0.;
	double X[3];
	{int __i=0; for(; __i <3; __i++) X[__i] = 0.0; }
;
	double Y[3];
	{int __i=0; for(; __i <3; __i++) Y[__i] = 0.0; }
;
	double XxY[3];
	{int __i=0; for(; __i <3; __i++) XxY[__i] = 0.0; }
;
	double CheckUnit = 0.0;
	int ii = 0;
	int _vi38;
	int _vi39;
	double _vr5;

	Af092bb27d524bbfb4d110dd5afc6a37f(Q1, concatStrings("routine Q1    Q1productQ2  ", Message)) ;
	Af092bb27d524bbfb4d110dd5afc6a37f(Q2, concatStrings("routine Q2     Q1productQ2 ", Message)) ;
	Acdc743b4ce17098cd2fcaf4eab2b6e76(Q1, QMX) ;
	_vi38 = 1 ;
	while ( _vi38 <= 4 ) {
	_vr5 = 0 ;
	_vi39 = 1 ;
	while ( _vi39 <= 4 ) {
	_vr5 += QMX[_vi39-1 + 4*(_vi38-1)] * Q2[_vi39-1] ;
	_vi39 += 1 ;
	}
	Q1Q2[_vi38-1] = _vr5 ;
	_vi38 += 1 ;
	}
	Af092bb27d524bbfb4d110dd5afc6a37f(Q1Q2, concatStrings("routine Q1Q2    Q1productQ2 ", Message)) ;
}


void SATELLITE__testGEO_default::A706849dac78113deb5787361fa82321d(double OM,double inc,double omPHI,double Q[])
{
	double Q1[4];
	{int __i=0; for(; __i <4; __i++) Q1[__i] = 0.0; }
;
	double Q2[4];
	{int __i=0; for(; __i <4; __i++) Q2[__i] = 0.0; }
;
	double Q3[4];
	{int __i=0; for(; __i <4; __i++) Q3[__i] = 0.0; }
;
	double Q4[4];
	{int __i=0; for(; __i <4; __i++) Q4[__i] = 0.0; }
;
	double Q5[4];
	{int __i=0; for(; __i <4; __i++) Q5[__i] = 0.0; }
;
	double QQ[4];
	{int __i=0; for(; __i <4; __i++) QQ[__i] = 0.0; }
;
	double QQQ[4];
	{int __i=0; for(; __i <4; __i++) QQQ[__i] = 0.0; }
;
	double QQQQ[4];
	{int __i=0; for(; __i <4; __i++) QQQQ[__i] = 0.0; }
;

	Q1[0] = cos(OM/2.) ;
	Q1[1] = 0 ;
	Q1[2] = 0 ;
	Q1[3] = sin(OM/2.) ;
	Q2[0] = cos(inc/2.) ;
	Q2[1] = sin(inc/2.) ;
	Q2[2] = 0 ;
	Q2[3] = 0 ;
	Q3[0] = cos(omPHI/2.) ;
	Q3[1] = 0 ;
	Q3[2] = 0 ;
	Q3[3] = sin(omPHI/2.) ;
	Q4[0] = 0.707106781186548 ;
	Q4[1] = 0 ;
	Q4[2] = 0 ;
	Q4[3] = 0.707106781186547 ;
	Q5[0] = 0.707106781186548 ;
	Q5[1] = -0.707106781186547 ;
	Q5[2] = 0 ;
	Q5[3] = 0 ;
	A56574614adcf365a4620cd0f26dcfbe7(Q1, Q2, QQ, "prod Q1, Q2 in CoordECIeulerOrbQuater") ;
	A56574614adcf365a4620cd0f26dcfbe7(QQ, Q3, QQQ, "prod Q3 in CoordECIeulerOrbQuater") ;
	A56574614adcf365a4620cd0f26dcfbe7(QQQ, Q4, QQQQ, "prod Q4 in CoordECIeulerOrbQuater") ;
	A56574614adcf365a4620cd0f26dcfbe7(QQQQ, Q5, Q, "prod Q5 in CoordECIeulerOrbQuater") ;
}


void SATELLITE__testGEO_default::Afc0207c8f1b43d38f6f00d2b331dc720(double psi,double theta,double phi,double Q[])
{
	double Q1[4];
	{int __i=0; for(; __i <4; __i++) Q1[__i] = 0.0; }
;
	double Q2[4];
	{int __i=0; for(; __i <4; __i++) Q2[__i] = 0.0; }
;
	double Q3[4];
	{int __i=0; for(; __i <4; __i++) Q3[__i] = 0.0; }
;
	double QQ[4];
	{int __i=0; for(; __i <4; __i++) QQ[__i] = 0.0; }
;

	Q1[0] = cos(psi/2.) ;
	Q1[1] = 0 ;
	Q1[2] = 0 ;
	Q1[3] = sin(psi/2.) ;
	Q2[0] = cos(theta/2.) ;
	Q2[1] = 0 ;
	Q2[2] = sin(theta/2.) ;
	Q2[3] = 0 ;
	Q3[0] = cos(phi/2.) ;
	Q3[1] = sin(phi/2.) ;
	Q3[2] = 0 ;
	Q3[3] = 0 ;
	A56574614adcf365a4620cd0f26dcfbe7(Q1, Q2, QQ, "prod Q1, Q2 in CoordOrbCardanSatQuater") ;
	A56574614adcf365a4620cd0f26dcfbe7(QQ, Q3, Q, "prod Q3 in CoordOrbCardanSatQuater") ;
}


void SATELLITE__testGEO_default::A5081ea99bec2b8ca0ea52666ac8f7f22(double Qo[],double Q[])
{
	double NormQ = 0.0;
	int _vi40;
	int _vi41;

	NormQ = _sqrt(_pow( Qo[0] , 2.,"Qo[1] ** 2." ) + _pow( Qo[1] , 2.,"Qo[2] ** 2." ) + _pow( Qo[2] , 2.,"Qo[3] ** 2." ) + _pow( Qo[3] , 2.,"Qo[4] ** 2." ),"Qo[1] ** 2. + Qo[2] ** 2. + Qo[3] ** 2. + Qo[4] ** 2.") ;
	if( Qo[0] >= 0 ) {
	_vi40 = 1 ;
	while ( _vi40 <= 4 ) {
	Q[_vi40-1] = _div( Qo[_vi40-1] , NormQ,"NormQ") ;
	_vi40 += 1 ;
	}
	}
	else {
	_vi41 = 1 ;
	while ( _vi41 <= 4 ) {
	Q[_vi41-1] = _div( -Qo[_vi41-1] , NormQ,"NormQ") ;
	_vi41 += 1 ;
	}
	}
}


void SATELLITE__testGEO_default::A18936a1f7169d6925ecb534df0335842(double Q[],double Qconjug[])
{
	int _vi42;

	Af092bb27d524bbfb4d110dd5afc6a37f(Q, "routine Q    Qinverse ") ;
	Qconjug[0] = Q[0] ;
	_vi42 = 2 ;
	while ( _vi42 <= 4 ) {
	Qconjug[_vi42-1] = -Q[_vi42-1] ;
	_vi42 += 1 ;
	}
}


void SATELLITE__testGEO_default::A9ab77ad911c75c5ee22c569181273554(double Q[],double QMXhat[])
{

	Acdc743b4ce17098cd2fcaf4eab2b6e76(Q, QMXhat) ;
	QMXhat[2 + 4*1] = Q[3] ;
	QMXhat[3 + 4*1] = -Q[2] ;
	QMXhat[3 + 4*2] = Q[1] ;
	A6a4c74738f880c9497ef79a2d5c26010(4, QMXhat, 2) ;
}


void SATELLITE__testGEO_default::A65edb06afa81ed47bb48b003cfffad0c(double Q[],double MatrixAtoB[],std::string Message)
{
	double Qinv[4];
	{int __i=0; for(; __i <4; __i++) Qinv[__i] = 0.0; }
;
	double QMXinv[16];
	{int __i=0; for(; __i <16; __i++) QMXinv[__i] = 0.0; }
;
	double QMXhat[16];
	{int __i=0; for(; __i <16; __i++) QMXhat[__i] = 0.0; }
;
	int _vi43;
	int _vi44;
	int _vi45;
	double _vr6;

	Af092bb27d524bbfb4d110dd5afc6a37f(Q, concatStrings("routine CoordAqaterBmatrix ", Message)) ;
	A18936a1f7169d6925ecb534df0335842(Q, Qinv) ;
	Acdc743b4ce17098cd2fcaf4eab2b6e76(Qinv, QMXinv) ;
	A9ab77ad911c75c5ee22c569181273554(Q, QMXhat) ;
	_vi43 = 1 ;
	while ( _vi43 <= 3 ) {
	_vi44 = 1 ;
	while ( _vi44 <= 3 ) {
	_vr6 = 0 ;
	_vi45 = 1 ;
	while ( _vi45 <= 4 ) {
	_vr6 += QMXinv[_vi45-1 + 4*(_vi43 + 1-1)] * QMXhat[_vi44 + 1-1 + 4*(_vi45-1)] ;
	_vi45 += 1 ;
	}
	MatrixAtoB[_vi44-1 + 3*(_vi43-1)] = _vr6 ;
	_vi44 += 1 ;
	}
	_vi43 += 1 ;
	}
}


void SATELLITE__testGEO_default::A4734c95e5416810119e160e39b7d4cc3(double Q[],double MatrixEnum[])
{

	A65edb06afa81ed47bb48b003cfffad0c(Q, MatrixEnum, " called CoordAqaterBmatrixEnum ") ;
}


void SATELLITE__testGEO_default::A673ab8dd8d269cc1158334fced60d24c(double InertiaMatrixSatFrozenComdry[],double OCOMdry[],double massDry,double InertiaMatrixFluidsCfluids[],double OCOMFluids[],double FluidMassTanks,double OCOM[],double InertiaMatrixSatFrozen[])
{
	double CdryCOM[3];
	{int __i=0; for(; __i <3; __i++) CdryCOM[__i] = 0.0; }
;
	double CfluidCOM[3];
	{int __i=0; for(; __i <3; __i++) CfluidCOM[__i] = 0.0; }
;
	double InertiaMatrixSatFrozenDry[9];
	{int __i=0; for(; __i <9; __i++) InertiaMatrixSatFrozenDry[__i] = 0.0; }
;
	double InertiaMatrixFluids[9];
	{int __i=0; for(; __i <9; __i++) InertiaMatrixFluids[__i] = 0.0; }
;
	int _vi46;
	int _vi47;
	int _vi48;
	int _vi49;

	A34abf7295c90f8265a8f8233dbb2a37e(-1, OCOMdry, 1, OCOM, 0, CdryCOM) ;
	A258ec9a890dd211ddeef7f6b9d43979a(InertiaMatrixSatFrozenComdry, CdryCOM, massDry, InertiaMatrixSatFrozenDry, 1) ;
	A34abf7295c90f8265a8f8233dbb2a37e(-1, OCOMFluids, 1, OCOM, 0, CfluidCOM) ;
	A258ec9a890dd211ddeef7f6b9d43979a(InertiaMatrixFluidsCfluids, CfluidCOM, FluidMassTanks, InertiaMatrixFluids, 1) ;
	_vi46 = 1 ;
	while ( _vi46 <= setofSize(&typ[5]) ) {
	_vi47 = setofElem(&typ[5], _vi46) ;
	_vi48 = 1 ;
	while ( _vi48 <= setofSize(&typ[5]) ) {
	_vi49 = setofElem(&typ[5], _vi48) ;
	InertiaMatrixSatFrozen[_vi48-1 + 3*(_vi46-1)] = InertiaMatrixFluids[_vi48-1 + 3*(_vi46-1)] + InertiaMatrixSatFrozenDry[_vi48-1 + 3*(_vi46-1)] ;
	_vi48 += 1 ;
	}
	_vi46 += 1 ;
	}
}


double SATELLITE__testGEO_default::A22c1adc231b377ecd584fbb6cfaefff6(double x,double y)
{

	if( x < y ) {
	return x ;
	}
	return y ;
}


void SATELLITE__testGEO_default::A3552299060f7c98d37a7a0d8c37eb81d(double R[],double V[],double * RAAN,double * inc,double * omPHI,double GMfocus,double Rfocus,double * AltApo,double * AltPer,double * Alt,double * Exc,double * om,double * Phi,double * sma)
{
	double Checkasin = 0.0;
	double CheckNorm = 0.0;
	double eR[3];
	{int __i=0; for(; __i <3; __i++) eR[__i] = 0.0; }
;
	double eV[3];
	{int __i=0; for(; __i <3; __i++) eV[__i] = 0.0; }
;
	double H[3];
	{int __i=0; for(; __i <3; __i++) H[__i] = 0.0; }
;
	double eH[3];
	{int __i=0; for(; __i <3; __i++) eH[__i] = 0.0; }
;
	double eX[3];
	{int __i=0; for(; __i <3; __i++) eX[__i] = 0.0; }
;
	double eY[3];
	{int __i=0; for(; __i <3; __i++) eY[__i] = 0.0; }
;
	double eZ[3];
	{int __i=0; for(; __i <3; __i++) eZ[__i] = 0.0; }
;
	double mR[3];
	{int __i=0; for(; __i <3; __i++) mR[__i] = 0.0; }
;
	double Cosi = 0.0;
	double Sini = 0.0;
	double CosOm = 0.0;
	double SinOm = 0.0;
	double CosomPhi = 0.0;
	double SinomPhi = 0.0;
	double vv = 0.0;
	double rr = 0.0;
	double hh = 0.0;
	double Energy = 0.0;
	double CosE = 0.0;
	double SinE = 0.0;
	double cosphi = 0.0;
	double sinphi = 0.0;
	double e = 0.0;
	double mean = 0.0;
	double CoshH = 0.0;
	double SinhH = 0.0;
	double HH = 0.0;
	double n = 0.0;
	double dtp = 0.0;

	A2e8f4393cd4e00e633246fcac8ad105e(R, V, H) ;
	A142a138dd7f7edde3cd3b31f7c280be6(R, eR, "function CoordRVECItoEulerAngles R") ;
	A142a138dd7f7edde3cd3b31f7c280be6(V, eV, "function CoordRVECItoEulerAngles V") ;
	A142a138dd7f7edde3cd3b31f7c280be6(H, eH, "function CoordRVECItoEulerAngles H") ;
	A2e8f4393cd4e00e633246fcac8ad105e(eH, eR, eX) ;
	Cosi = eH[2] ;
	Sini = _pow( abs(1. - _pow( eH[2] , 2.,"eH[Zq] ** 2." )) , 0.5,"abs(1. - eH[Zq] ** 2.) ** 0.5" ) ;
	if( (abs(Cosi) - 1) > 1e-006 ) {
	PRINT(" ERROR in CoordRVECItoEulerAngles cos >+-1 " + asString(Cosi)) ;
	}
	*inc = _acos(Ad5577fc29943618f69ad5c843eba833c(-1, A22c1adc231b377ecd584fbb6cfaefff6(1, Cosi)),"MATH.max(-1, MATH.min(1, Cosi))") ;
	if( *inc == 0 ) {
	CosOm = 1 ;
	SinOm = 0 ;
	CosomPhi = eR[0] * CosOm + eR[1] * SinOm ;
	SinomPhi = eR[2] ;
	}
	else {
	CosOm = _div( -eH[1] , Sini,"Sini") ;
	SinOm = _div( eH[0] , Sini,"Sini") ;
	CosomPhi = eR[0] * CosOm + eR[1] * SinOm ;
	SinomPhi = _div( eR[2] , Sini,"Sini") ;
	}
	*RAAN = atan2(SinOm, CosOm) ;
	*omPHI = atan2(SinomPhi, CosomPhi) ;
	vv = A37bff279528b6317bb6373d02308ca80(V) ;
	rr = A37bff279528b6317bb6373d02308ca80(R) ;
	hh = A37bff279528b6317bb6373d02308ca80(H) ;
	Energy = _pow( vv , 2.,"vv ** 2." )/2. - _div( GMfocus , rr,"rr") ;
	if( Energy < 0 ) {
	*sma = _div( -GMfocus/2. , Energy,"Energy") ;
	*Exc = _pow( abs(1. - _div( _div( _pow( hh , 2.,"hh ** 2." ) , GMfocus,"GMfocus") , *sma,"sma")) , 0.5,"abs(1. - hh ** 2. / GMfocus / sma) ** 0.5" ) ;
	CosE = _div( 1. , *Exc,"Exc") * (1. - _div( rr , *sma,"sma")) ;
	SinE = _div( _div( A019bab5f04c67b2980e631858dd4b791(R, V) , *Exc,"Exc") , _pow( (GMfocus * *sma) , 0.5,"GMfocus * sma ** 0.5" ),"(GMfocus * sma) ** 0.5") ;
	cosphi = _div( (CosE - *Exc) , (1. - *Exc * CosE),"1. - Exc * CosE") ;
	sinphi = _div( _pow( abs(1. - _pow( *Exc , 2.,"Exc ** 2." )) , 0.5,"abs(1. - Exc ** 2.) ** 0.5" ) * SinE , (1. - *Exc * CosE),"1. - Exc * CosE") ;
	e = atan2(SinE, CosE) ;
	mean = e - *Exc * SinE ;
	}
	else {
	*sma = _div( GMfocus/2. , Energy,"Energy") ;
	*Exc = _pow( (1. + _div( _div( _pow( hh , 2.,"hh ** 2." ) , GMfocus,"GMfocus") , *sma,"sma")) , 0.5,"1. + hh ** 2. / GMfocus / sma ** 0.5" ) ;
	CoshH = _div( 1. , *Exc,"Exc") * (1. + _div( rr , *sma,"sma")) ;
	SinhH = _div( _div( A019bab5f04c67b2980e631858dd4b791(R, V) , *Exc,"Exc") , _pow( (GMfocus * *sma) , 0.5,"GMfocus * sma ** 0.5" ),"(GMfocus * sma) ** 0.5") ;
	cosphi = _div( (CoshH - *Exc) , (1. - *Exc * CoshH),"1. - Exc * CoshH") ;
	sinphi = _div( _pow( abs(_pow( *Exc , 2.,"Exc ** 2." ) - 1.) , 0.5,"abs(Exc ** 2. - 1.) ** 0.5" ) * SinhH , (1. - *Exc * CoshH),"1. - Exc * CoshH") ;
	HH = 0.5 * (_log(1. + _div( SinhH , CoshH,"CoshH"),"1. + SinhH / CoshH") - _log(1. - _div( SinhH , CoshH,"CoshH"),"1. - SinhH / CoshH")) ;
	mean = -HH + *Exc * sinh(HH) ;
	}
	n = _pow( (_div( GMfocus , _pow( *sma , 3.,"sma ** 3." ),"sma ** 3.")) , 0.5,"GMfocus / sma ** 3. ** 0.5" ) ;
	dtp = _div( mean , n,"n") ;
	*Phi = atan2(sinphi, cosphi) ;
	*om = *omPHI - *Phi ;
	*AltApo = *sma * (1. + *Exc) - Rfocus ;
	*AltPer = *sma * (1. - *Exc) - Rfocus ;
	*Alt = rr - Rfocus ;
}


void SATELLITE__testGEO_default::Aed7dc2c11dad22ced17f49d6c0566a88(double V[],double CMV[])
{

	A9c7f6750ad1855da473a532afaa051f0(V, CMV) ;
}


void SATELLITE__testGEO_default::A9ec5c002b3ec152a1a2fc48d1658bcdc(double Wrot[],double DQmat[])
{
	double QWrot[4];
	{int __i=0; for(; __i <4; __i++) QWrot[__i] = 0.0; }
;
	int ii = 1;
	int _vi50;
	int _vi51;

	QWrot[ii-1] = 0 ;
	_vi50 = 1 ;
	while ( _vi50 <= setofSize(&typ[5]) ) {
	_vi51 = setofElem(&typ[5], _vi50) ;
	ii = ii + 1 ;
	QWrot[ii-1] = Wrot[_vi50-1] ;
	_vi50 += 1 ;
	}
	A9ab77ad911c75c5ee22c569181273554(QWrot, DQmat) ;
}


void SATELLITE__testGEO_default::A323f2b87d160fbb4d6b1756e2b19532c(double * psi,double * theta,double * phi,double Q[])
{
	double CheckAsin = 0.0;

	Af092bb27d524bbfb4d110dd5afc6a37f(Q, "routine CoordAquaterBcardan") ;
	*psi = atan2(2. * (Q[1] * Q[2] + Q[0] * Q[3]), _pow( Q[0] , 2.,"Q[1] ** 2." ) + _pow( Q[1] , 2.,"Q[2] ** 2." ) - _pow( Q[2] , 2.,"Q[3] ** 2." ) - _pow( Q[3] , 2.,"Q[4] ** 2." )) ;
	*theta = -_asin(A22c1adc231b377ecd584fbb6cfaefff6(Ad5577fc29943618f69ad5c843eba833c(2. * (Q[1] * Q[3] - Q[0] * Q[2]), -1.), 1.),"MATH.min(MATH.max(2. * (Q[2] * Q[4] - Q[1] * Q[3]), -1.), 1.)") ;
	*phi = atan2(2. * (Q[2] * Q[3] + Q[0] * Q[1]), _pow( Q[0] , 2.,"Q[1] ** 2." ) - _pow( Q[1] , 2.,"Q[2] ** 2." ) - _pow( Q[2] , 2.,"Q[3] ** 2." ) + _pow( Q[3] , 2.,"Q[4] ** 2." )) ;
	CheckAsin = 2. * (Q[1] * Q[3] - Q[0] * Q[2]) ;
	if( abs(CheckAsin) > 1 ) {
	A0635b7f593d6f049ce66caf057d49668(abs(CheckAsin) - 1., 1e-010, "ERREUR CoordAquaterBcardan asin but mastered with min( max(  , -1.),1.) ") ;
	}
}


double SATELLITE__testGEO_default::A226af8a5dd1fafc5431aba9b0ab79462(double NodeOmega[],double NOmeg,double NAccel,double sinAlpha,double cosAlpha,double rho)
{
	double dP = 0.0;

	dP = rho * (_pow( NOmeg , 2.,"NOmeg ** 2." ) * (_pow( NodeOmega[0] , 2.,"NodeOmega[x] ** 2." ) + _pow( NodeOmega[1] , 2.,"NodeOmega[y] ** 2." ))/2. + NAccel * (sinAlpha * NodeOmega[0] - cosAlpha * NodeOmega[2])) ;
	return dP ;
}


double SATELLITE__testGEO_default::Ae3d23ead747eef5080f2dd0780dd1565(double Mom[],double OCOM[],double NOmeg,double NAccel,double sinAlpha,double cosAlpha,double rho,double OPoint[])
{
	double PointOmega[3];
	{int __i=0; for(; __i <3; __i++) PointOmega[__i] = 0.0; }
;
	double DeltaPpoint = 0.0;
	int _vi52;
	int _vi53;
	int _vi54;
	int _vi55;
	double _vr7;

	_vi52 = 1 ;
	while ( _vi52 <= setofSize(&typ[5]) ) {
	_vi53 = setofElem(&typ[5], _vi52) ;
	_vr7 = 0 ;
	_vi54 = 1 ;
	while ( _vi54 <= setofSize(&typ[5]) ) {
	_vi55 = setofElem(&typ[5], _vi54) ;
	_vr7 += Mom[_vi52-1 + 3*(_vi54-1)] * (OPoint[_vi54-1] - OCOM[_vi54-1]) ;
	_vi54 += 1 ;
	}
	PointOmega[_vi52-1] = _vr7 ;
	_vi52 += 1 ;
	}
	DeltaPpoint = A226af8a5dd1fafc5431aba9b0ab79462(PointOmega, NOmeg, NAccel, sinAlpha, cosAlpha, rho) ;
	return DeltaPpoint ;
}


double SATELLITE__testGEO_default::A58d39c798cf21ee9da59291fcc4e750d(double A[],double B[],double * cosAlpha,double * sinAlpha)
{
	double aa = 0.0;
	double bb = 0.0;
	double sinAlpha_abs = 0.0;
	double Alphadeg = 0.0;
	double C[3];
	{int __i=0; for(; __i <3; __i++) C[__i] = 0.0; }
;

	aa = A37bff279528b6317bb6373d02308ca80(A) ;
	bb = A37bff279528b6317bb6373d02308ca80(B) ;
	if( aa != 0 && bb != 0 ) {
	*cosAlpha = _div( A019bab5f04c67b2980e631858dd4b791(A, B) , (aa * bb),"aa * bb") ;
	A2e8f4393cd4e00e633246fcac8ad105e(A, B, C) ;
	sinAlpha_abs = _div( A37bff279528b6317bb6373d02308ca80(C) , (aa * bb),"aa * bb") ;
		}
	else if( aa == 0) {
	return 0 ;

	}
	else {
	return 0 ;
	}
	*sinAlpha = sinAlpha_abs ;
	Alphadeg = A3f5f23a7a3907152dae2b7f68f204c63(atan2(*sinAlpha, *cosAlpha), 0) ;
	if( (cos(A01bfbe1edd393b2c1ca09d44c931495b(Alphadeg)) - *cosAlpha) > 0.001 ) {
	Alphadeg = -Alphadeg ;
	if( (cos(A01bfbe1edd393b2c1ca09d44c931495b(Alphadeg)) - *cosAlpha) > 0.001 ) {
	PRINT("AngleVectordeg  problem with Alphadeg=" + asString(Alphadeg)) ;
	}
	}
	return Alphadeg ;
}


void SATELLITE__testGEO_default::A7e3eef3b3fb41ec3b95eb000dd6132a9(double OmegaXo[],double OmegaYo[],double OmegaZo[],double Mom[])
{
	double OmegaX[3];
	{int __i=0; for(; __i <3; __i++) OmegaX[__i] = 0.0; }
;
	double OmegaY[3];
	{int __i=0; for(; __i <3; __i++) OmegaY[__i] = 0.0; }
;
	double OmegaZ[3];
	{int __i=0; for(; __i <3; __i++) OmegaZ[__i] = 0.0; }
;
	int _vi75;
	int _vi76;
	int _vi77;
	int _vi78;

	_vi75 = 1 ;
	while ( _vi75 <= setofSize(&typ[5]) ) {
	_vi76 = setofElem(&typ[5], _vi75) ;
	OmegaX[_vi75-1] = OmegaXo[_vi75-1] ;
	OmegaY[_vi75-1] = OmegaYo[_vi75-1] ;
	OmegaZ[_vi75-1] = OmegaZo[_vi75-1] ;
	_vi75 += 1 ;
	}
	if( A37bff279528b6317bb6373d02308ca80(OmegaXo) != 0 ) {
	A142a138dd7f7edde3cd3b31f7c280be6(OmegaXo, OmegaX, "function MatrixFrameChange OmegaXi") ;
	}
	if( A37bff279528b6317bb6373d02308ca80(OmegaYo) != 0 ) {
	A142a138dd7f7edde3cd3b31f7c280be6(OmegaYo, OmegaY, "function MatrixFrameChange OmegaYi") ;
	}
	if( A37bff279528b6317bb6373d02308ca80(OmegaZo) != 0 ) {
	A142a138dd7f7edde3cd3b31f7c280be6(OmegaZo, OmegaZ, "function MatrixFrameChange OmegaZi") ;
	}
	_vi77 = 1 ;
	while ( _vi77 <= setofSize(&typ[5]) ) {
	_vi78 = setofElem(&typ[5], _vi77) ;
	Mom[0 + 3*(_vi77-1)] = OmegaX[_vi77-1] ;
	Mom[1 + 3*(_vi77-1)] = OmegaY[_vi77-1] ;
	Mom[2 + 3*(_vi77-1)] = OmegaZ[_vi77-1] ;
	_vi77 += 1 ;
	}
}


void SATELLITE__testGEO_default::A05270a6e1dc60e8d34e8fde61ecf7f7b(int n4,int Nodes,double Mom[],double OCOM[],double NOmeg,double NAccel,double sinAlpha,double cosAlpha,double rho[],double OTankNodes[],double IsoDeltaPmap[])
{
	double NodeOmega[3];
	{int __i=0; for(; __i <3; __i++) NodeOmega[__i] = 0.0; }
;
	int __cf0_IsoDeltaPmap;
	int __cf1_IsoDeltaPmap;
	int __cf1_OTankNodes;
	int __cf2_IsoDeltaPmap;
	int __cf2_OTankNodes;
	int __cf3_OTankNodes;
	int _vi79;
	int _vi80;
	int _vi81;
	int _vi82;
	int _vi83;
	int _vi84;
	int _vi85;
	int _vi86;
	double _vr11;

	__cf1_OTankNodes = 3 * Nodes ;
	__cf2_OTankNodes = __cf1_OTankNodes * Nodes ;
	__cf3_OTankNodes = __cf2_OTankNodes * Nodes ;
	__cf0_IsoDeltaPmap = Nodes ;
	__cf1_IsoDeltaPmap = __cf0_IsoDeltaPmap * Nodes ;
	__cf2_IsoDeltaPmap = __cf1_IsoDeltaPmap * Nodes ;
	_vi79 = 1 ;
	while ( _vi79 <= n4 ) {
	_vi80 = 1 ;
	while ( _vi80 <= Nodes ) {
	_vi81 = 1 ;
	while ( _vi81 <= Nodes ) {
	_vi82 = 1 ;
	while ( _vi82 <= Nodes ) {
	_vi83 = 1 ;
	while ( _vi83 <= setofSize(&typ[5]) ) {
	_vi84 = setofElem(&typ[5], _vi83) ;
	_vr11 = 0 ;
	_vi85 = 1 ;
	while ( _vi85 <= setofSize(&typ[5]) ) {
	_vi86 = setofElem(&typ[5], _vi85) ;
	_vr11 += Mom[_vi83-1 + 3*(_vi85-1)] * (OTankNodes[_vi85-1 + 3*(_vi82-1) + __cf1_OTankNodes*(_vi81-1) + __cf2_OTankNodes*(_vi80-1) + __cf3_OTankNodes*(_vi79-1)] - OCOM[_vi85-1]) ;
	_vi85 += 1 ;
	}
	NodeOmega[_vi83-1] = _vr11 ;
	_vi83 += 1 ;
	}
	IsoDeltaPmap[_vi82-1 + __cf0_IsoDeltaPmap*(_vi81-1) + __cf1_IsoDeltaPmap*(_vi80-1) + __cf2_IsoDeltaPmap*(_vi79-1)] = A226af8a5dd1fafc5431aba9b0ab79462(NodeOmega, NOmeg, NAccel, sinAlpha, cosAlpha, rho[_vi79-1]) ;
	_vi82 += 1 ;
	}
	_vi81 += 1 ;
	}
	_vi80 += 1 ;
	}
	_vi79 += 1 ;
	}
}


void SATELLITE__testGEO_default::A3538922b199e59bd7a7586f35c3974f5(int n4,int Nodes,double IsoDeltaPmap[],double IsoDeltaPmin[],double IsoDeltaPmax[])
{
	double NodeOmega[3];
	{int __i=0; for(; __i <3; __i++) NodeOmega[__i] = 0.0; }
;
	int __cf0_IsoDeltaPmap;
	int __cf1_IsoDeltaPmap;
	int __cf2_IsoDeltaPmap;
	int _vi87;
	int _vi88;
	int _vi89;
	int _vi90;

	__cf0_IsoDeltaPmap = Nodes ;
	__cf1_IsoDeltaPmap = __cf0_IsoDeltaPmap * Nodes ;
	__cf2_IsoDeltaPmap = __cf1_IsoDeltaPmap * Nodes ;
	_vi87 = 1 ;
	while ( _vi87 <= n4 ) {
	IsoDeltaPmin[_vi87-1] = IsoDeltaPmap[0 + __cf0_IsoDeltaPmap*0 + __cf1_IsoDeltaPmap*0 + __cf2_IsoDeltaPmap*(_vi87-1)] ;
	IsoDeltaPmax[_vi87-1] = IsoDeltaPmap[0 + __cf0_IsoDeltaPmap*0 + __cf1_IsoDeltaPmap*0 + __cf2_IsoDeltaPmap*(_vi87-1)] ;
	_vi88 = 1 ;
	while ( _vi88 <= Nodes ) {
	_vi89 = 1 ;
	while ( _vi89 <= Nodes ) {
	_vi90 = 1 ;
	while ( _vi90 <= Nodes ) {
	if( IsoDeltaPmin[_vi87-1] > IsoDeltaPmap[_vi90-1 + __cf0_IsoDeltaPmap*(_vi89-1) + __cf1_IsoDeltaPmap*(_vi88-1) + __cf2_IsoDeltaPmap*(_vi87-1)] ) {
	IsoDeltaPmin[_vi87-1] = IsoDeltaPmap[_vi90-1 + __cf0_IsoDeltaPmap*(_vi89-1) + __cf1_IsoDeltaPmap*(_vi88-1) + __cf2_IsoDeltaPmap*(_vi87-1)] ;
	}
	if( IsoDeltaPmax[_vi87-1] < IsoDeltaPmap[_vi90-1 + __cf0_IsoDeltaPmap*(_vi89-1) + __cf1_IsoDeltaPmap*(_vi88-1) + __cf2_IsoDeltaPmap*(_vi87-1)] ) {
	IsoDeltaPmax[_vi87-1] = IsoDeltaPmap[_vi90-1 + __cf0_IsoDeltaPmap*(_vi89-1) + __cf1_IsoDeltaPmap*(_vi88-1) + __cf2_IsoDeltaPmap*(_vi87-1)] ;
	}
	_vi90 += 1 ;
	}
	_vi89 += 1 ;
	}
	_vi88 += 1 ;
	}
	_vi87 += 1 ;
	}
}


void SATELLITE__testGEO_default::Ac1bf81150cedafec02bdcb41220855ae(int n4,int Nodes,int i,int l,int m,int n,double MinertiaVolume[],double dV_element,double OTankNodes[])
{
	int __cf1_OTankNodes;
	int __cf2_OTankNodes;
	int __cf3_OTankNodes;

	__cf1_OTankNodes = 3 * Nodes ;
	__cf2_OTankNodes = __cf1_OTankNodes * Nodes ;
	__cf3_OTankNodes = __cf2_OTankNodes * Nodes ;
	MinertiaVolume[0 + 3*0 + 9*(i-1)] = MinertiaVolume[0 + 3*0 + 9*(i-1)] + dV_element * (_pow( OTankNodes[1 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] , 2.,"OTankNodes[i,l,m,n,y] ** 2." ) + _pow( OTankNodes[2 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] , 2.,"OTankNodes[i,l,m,n,z] ** 2." )) ;
	MinertiaVolume[1 + 3*0 + 9*(i-1)] = MinertiaVolume[1 + 3*0 + 9*(i-1)] - dV_element * OTankNodes[0 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] * OTankNodes[1 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] ;
	MinertiaVolume[2 + 3*0 + 9*(i-1)] = MinertiaVolume[2 + 3*0 + 9*(i-1)] - dV_element * OTankNodes[0 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] * OTankNodes[2 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] ;
	MinertiaVolume[0 + 3*1 + 9*(i-1)] = MinertiaVolume[1 + 3*0 + 9*(i-1)] ;
	MinertiaVolume[1 + 3*1 + 9*(i-1)] = MinertiaVolume[1 + 3*1 + 9*(i-1)] + dV_element * (_pow( OTankNodes[0 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] , 2.,"OTankNodes[i,l,m,n,x] ** 2." ) + _pow( OTankNodes[2 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] , 2.,"OTankNodes[i,l,m,n,z] ** 2." )) ;
	MinertiaVolume[2 + 3*1 + 9*(i-1)] = MinertiaVolume[2 + 3*1 + 9*(i-1)] - dV_element * OTankNodes[1 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] * OTankNodes[2 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] ;
	MinertiaVolume[0 + 3*2 + 9*(i-1)] = MinertiaVolume[2 + 3*0 + 9*(i-1)] ;
	MinertiaVolume[1 + 3*2 + 9*(i-1)] = MinertiaVolume[2 + 3*1 + 9*(i-1)] ;
	MinertiaVolume[2 + 3*2 + 9*(i-1)] = MinertiaVolume[2 + 3*2 + 9*(i-1)] + dV_element * (_pow( OTankNodes[0 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] , 2.,"OTankNodes[i,l,m,n,x] ** 2." ) + _pow( OTankNodes[1 + 3*(n-1) + __cf1_OTankNodes*(m-1) + __cf2_OTankNodes*(l-1) + __cf3_OTankNodes*(i-1)] , 2.,"OTankNodes[i,l,m,n,y] ** 2." )) ;
}


void SATELLITE__testGEO_default::A89a348f8b00d02597dab097b75f2b2c3(int n4,int Nodes,double IsoDeltaPmap[],double FlagBottom[],double VolumeFluid[],double dV_element,double Mom[],double OTankNodes[],double COMtank[],double SurfaceIsoDeltaP[],double dPoutlet[],int PointFreeSurfIndex[],double PointFreeSurface[],double VolumeFluidApprox[],double MapFreeSurface[],int * npt,double MinertiaVolume[])
{
	double IsoDeltaP = 0.0;
	double step = 0.0;
	double Vol = 0.0;
	double IsoDeltaPbottom = 0.0;
	double IsoDeltaP_outlet = 0.0;
	double *IsoDeltaPmin;
	double *IsoDeltaPmax;
	double deltaPM = 0.0;
	double deltaPm = 0.0;
	double dP = 0.0;
	double SurfaceIsoDeltaPmin = 0.0;
	double VolumeFluidApproxRough = 0.0;
	double Volpreviouslayer = 0.0;
	double dV_elementAdjusted = 0.0;
	int NodesdeltaP = 0;
	int iOutlet = 0;
	int flag = 0;
	int inum = 0;
	int inb = 0;
	int iSurface = 0;
	int iCentre = 0;
	int nptplus = 0;
	int inbNodesLayer = 0;
	int iHalfNodes = 0;
	double VolumeWall = 0.0;
	double VolumeWallLoop = 0.0;
	int ConditionOnlyLastLayer = 0;
	int __cf0_IsoDeltaPmap;
	int __cf1_IsoDeltaPmap;
	int __cf1_OTankNodes;
	int __cf2_IsoDeltaPmap;
	int __cf2_OTankNodes;
	int __cf3_OTankNodes;
	int _vi100;
	int _vi101;
	int _vi102;
	int _vi103;
	int _vi104;
	int _vi105;
	int _vi106;
	int _vi107;
	int _vi108;
	int _vi109;
	int _vi110;
	int _vi111;
	int _vi112;
	int _vi113;
	int _vi114;
	int _vi115;
	int _vi116;
	int _vi117;
	int _vi118;
	int _vi119;
	int _vi120;
	int _vi121;
	int _vi122;
	int _vi123;
	int _vi91;
	int _vi92;
	int _vi93;
	int _vi94;
	int _vi95;
	int _vi96;
	int _vi97;
	int _vi98;
	int _vi99;

	__cf0_IsoDeltaPmap = Nodes ;
	__cf1_IsoDeltaPmap = __cf0_IsoDeltaPmap * Nodes ;
	__cf2_IsoDeltaPmap = __cf1_IsoDeltaPmap * Nodes ;
	__cf1_OTankNodes = 3 * Nodes ;
	__cf2_OTankNodes = __cf1_OTankNodes * Nodes ;
	__cf3_OTankNodes = __cf2_OTankNodes * Nodes ;
	IsoDeltaPmin = ALLOC__MEM__INIT(double ,n4,0.0) ;
	IsoDeltaPmax = ALLOC__MEM__INIT(double ,n4,0.0) ;
	A3538922b199e59bd7a7586f35c3974f5(n4, Nodes, IsoDeltaPmap, IsoDeltaPmin, IsoDeltaPmax) ;
	NodesdeltaP = Nodes ;
	iHalfNodes = Nodes/2 ;
	_vi91 = 1 ;
	while ( _vi91 <= n4 ) {
	_vi92 = 1 ;
	while ( _vi92 <= setofSize(&typ[5]) ) {
	_vi93 = setofElem(&typ[5], _vi92) ;
	COMtank[_vi92-1 + 3*(_vi91-1)] = 0 ;
	_vi94 = 1 ;
	while ( _vi94 <= setofSize(&typ[5]) ) {
	_vi95 = setofElem(&typ[5], _vi94) ;
	MinertiaVolume[_vi94-1 + 3*(_vi92-1) + 9*(_vi91-1)] = 0 ;
	_vi94 += 1 ;
	}
	_vi92 += 1 ;
	}
	SurfaceIsoDeltaP[_vi91-1] = 0 ;
	PointFreeSurfIndex[0 + 3*(_vi91-1)] = 0 ;
	PointFreeSurfIndex[1 + 3*(_vi91-1)] = 0 ;
	PointFreeSurfIndex[2 + 3*(_vi91-1)] = 0 ;
	if( ! (IsoDeltaPmax[_vi91-1] == 0 && IsoDeltaPmin[_vi91-1] == 0) ) {
	VolumeFluidApprox[_vi91-1] = 0 ;
	IsoDeltaPbottom = IsoDeltaPmax[_vi91-1] ;
	SurfaceIsoDeltaPmin = IsoDeltaPmax[_vi91-1] ;
	step = _divRI( -(IsoDeltaPmax[_vi91-1] - IsoDeltaPmin[_vi91-1]) , NodesdeltaP,"NodesdeltaP") ;
	flag = 0 ;
	IsoDeltaP_outlet = 0 ;
	_vi96 = 1 ;
	while ( _vi96 <= (NodesdeltaP + 1) ) {
	IsoDeltaP = IsoDeltaPbottom + step * (_vi96 - 1.) ;
	if( flag == 0 ) {
	VolumeFluidApprox[_vi91-1] = 0 ;
	_vi97 = 1 ;
	while ( _vi97 <= Nodes ) {
	_vi98 = 1 ;
	while ( _vi98 <= Nodes ) {
	_vi99 = 1 ;
	while ( _vi99 <= Nodes ) {
	if( IsoDeltaP <= IsoDeltaPmap[_vi99-1 + __cf0_IsoDeltaPmap*(_vi98-1) + __cf1_IsoDeltaPmap*(_vi97-1) + __cf2_IsoDeltaPmap*(_vi91-1)] ) {
	VolumeFluidApprox[_vi91-1] = VolumeFluidApprox[_vi91-1] + dV_element ;
	if( SurfaceIsoDeltaPmin > IsoDeltaPmap[_vi99-1 + __cf0_IsoDeltaPmap*(_vi98-1) + __cf1_IsoDeltaPmap*(_vi97-1) + __cf2_IsoDeltaPmap*(_vi91-1)] ) {
	SurfaceIsoDeltaPmin = IsoDeltaPmap[_vi99-1 + __cf0_IsoDeltaPmap*(_vi98-1) + __cf1_IsoDeltaPmap*(_vi97-1) + __cf2_IsoDeltaPmap*(_vi91-1)] ;
	}
	}
	_vi99 += 1 ;
	}
	_vi98 += 1 ;
	}
	_vi97 += 1 ;
	}
	if( VolumeFluidApprox[_vi91-1] >= VolumeFluid[_vi91-1] || _vi96 == (NodesdeltaP + 1) ) {
	VolumeFluidApproxRough = VolumeFluidApprox[_vi91-1] ;
	SurfaceIsoDeltaP[_vi91-1] = SurfaceIsoDeltaPmin ;
	iOutlet = Nodes/2 + 1 ;
	IsoDeltaP_outlet = IsoDeltaPmap[iOutlet-1 + __cf0_IsoDeltaPmap*(iOutlet-1) + __cf1_IsoDeltaPmap*0 + __cf2_IsoDeltaPmap*(_vi91-1)] ;
	if( (2 * iHalfNodes) == Nodes ) {
	IsoDeltaP_outlet = (IsoDeltaPmap[iOutlet-1 + __cf0_IsoDeltaPmap*(iOutlet-1) + __cf1_IsoDeltaPmap*0 + __cf2_IsoDeltaPmap*(_vi91-1)] + IsoDeltaPmap[iOutlet - 1-1 + __cf0_IsoDeltaPmap*(iOutlet - 1-1) + __cf1_IsoDeltaPmap*0 + __cf2_IsoDeltaPmap*(_vi91-1)])/2. ;
	}
	dPoutlet[_vi91-1] = IsoDeltaP_outlet - SurfaceIsoDeltaP[_vi91-1] ;
	VolumeFluidApprox[_vi91-1] = 0 ;
	*npt = 0 ;
	_vi100 = 1 ;
	while ( _vi100 <= Nodes ) {
	_vi101 = 1 ;
	while ( _vi101 <= Nodes ) {
	_vi102 = 1 ;
	while ( _vi102 <= Nodes ) {
	if( SurfaceIsoDeltaP[_vi91-1] <= (IsoDeltaPmap[_vi102-1 + __cf0_IsoDeltaPmap*(_vi101-1) + __cf1_IsoDeltaPmap*(_vi100-1) + __cf2_IsoDeltaPmap*(_vi91-1)] + step) ) {
	_vi103 = 1 ;
	while ( _vi103 <= setofSize(&typ[5]) ) {
	_vi104 = setofElem(&typ[5], _vi103) ;
	COMtank[_vi103-1 + 3*(_vi91-1)] = _div( (VolumeFluidApprox[_vi91-1] * COMtank[_vi103-1 + 3*(_vi91-1)] + dV_element * OTankNodes[_vi103-1 + 3*(_vi102-1) + __cf1_OTankNodes*(_vi101-1) + __cf2_OTankNodes*(_vi100-1) + __cf3_OTankNodes*(_vi91-1)]) , (VolumeFluidApprox[_vi91-1] + dV_element),"VolumeFluidApprox[_vi91] + dV_element") ;
	_vi103 += 1 ;
	}
	Ac1bf81150cedafec02bdcb41220855ae(n4, Nodes, _vi91, _vi100, _vi101, _vi102, MinertiaVolume, dV_element, OTankNodes) ;
	VolumeFluidApprox[_vi91-1] = VolumeFluidApprox[_vi91-1] + dV_element ;
	Volpreviouslayer = VolumeFluidApprox[_vi91-1] ;
	}
	_vi102 += 1 ;
	}
	_vi101 += 1 ;
	}
	_vi100 += 1 ;
	}
	_vi105 = 1 ;
	while ( _vi105 <= Nodes ) {
	_vi106 = 1 ;
	while ( _vi106 <= Nodes ) {
	_vi107 = 1 ;
	while ( _vi107 <= Nodes ) {
	if( SurfaceIsoDeltaP[_vi91-1] > (IsoDeltaPmap[_vi107-1 + __cf0_IsoDeltaPmap*(_vi106-1) + __cf1_IsoDeltaPmap*(_vi105-1) + __cf2_IsoDeltaPmap*(_vi91-1)] + step) && SurfaceIsoDeltaP[_vi91-1] <= IsoDeltaPmap[_vi107-1 + __cf0_IsoDeltaPmap*(_vi106-1) + __cf1_IsoDeltaPmap*(_vi105-1) + __cf2_IsoDeltaPmap*(_vi91-1)] ) {
	dV_elementAdjusted = _div( (VolumeFluid[_vi91-1] - Volpreviouslayer) , (VolumeFluidApproxRough - Volpreviouslayer),"VolumeFluidApproxRough - Volpreviouslayer") * dV_element ;
	_vi108 = 1 ;
	while ( _vi108 <= setofSize(&typ[5]) ) {
	_vi109 = setofElem(&typ[5], _vi108) ;
	COMtank[_vi108-1 + 3*(_vi91-1)] = _div( (VolumeFluidApprox[_vi91-1] * COMtank[_vi108-1 + 3*(_vi91-1)] + dV_elementAdjusted * OTankNodes[_vi108-1 + 3*(_vi107-1) + __cf1_OTankNodes*(_vi106-1) + __cf2_OTankNodes*(_vi105-1) + __cf3_OTankNodes*(_vi91-1)]) , (VolumeFluidApprox[_vi91-1] + dV_elementAdjusted),"VolumeFluidApprox[_vi91] + dV_elementAdjusted") ;
	_vi108 += 1 ;
	}
	Ac1bf81150cedafec02bdcb41220855ae(n4, Nodes, _vi91, _vi105, _vi106, _vi107, MinertiaVolume, dV_elementAdjusted, OTankNodes) ;
	VolumeFluidApprox[_vi91-1] = VolumeFluidApprox[_vi91-1] + dV_elementAdjusted ;
	if( SurfaceIsoDeltaPmin == IsoDeltaPmap[_vi107-1 + __cf0_IsoDeltaPmap*(_vi106-1) + __cf1_IsoDeltaPmap*(_vi105-1) + __cf2_IsoDeltaPmap*(_vi91-1)] ) {
	PointFreeSurfIndex[0 + 3*(_vi91-1)] = _vi105 ;
	PointFreeSurfIndex[1 + 3*(_vi91-1)] = _vi106 ;
	PointFreeSurfIndex[2 + 3*(_vi91-1)] = _vi107 ;
	}
	*npt = *npt + 1 ;
	if( *npt <= 1000 ) {
	_vi110 = 1 ;
	while ( _vi110 <= setofSize(&typ[5]) ) {
	_vi111 = setofElem(&typ[5], _vi110) ;
	MapFreeSurface[_vi110-1 + 3*(*npt-1) + 3000*(_vi91-1)] = OTankNodes[_vi110-1 + 3*(_vi107-1) + __cf1_OTankNodes*(_vi106-1) + __cf2_OTankNodes*(_vi105-1) + __cf3_OTankNodes*(_vi91-1)] ;
	_vi110 += 1 ;
	}
	}
	}
	_vi107 += 1 ;
	}
	_vi106 += 1 ;
	}
	_vi105 += 1 ;
	}
	_vi112 = 1 ;
	while ( _vi112 <= setofSize(&typ[5]) ) {
	_vi113 = setofElem(&typ[5], _vi112) ;
	PointFreeSurface[_vi112-1 + 3*(_vi91-1)] = OTankNodes[_vi112-1 + 3*(PointFreeSurfIndex[2 + 3*(_vi91-1)]-1) + __cf1_OTankNodes*(PointFreeSurfIndex[1 + 3*(_vi91-1)]-1) + __cf2_OTankNodes*(PointFreeSurfIndex[0 + 3*(_vi91-1)]-1) + __cf3_OTankNodes*(_vi91-1)] ;
	_vi112 += 1 ;
	}
	_vi114 = *npt + 1 ;
	while ( _vi114 <= A22c1adc231b377ecd584fbb6cfaefff6(*npt + 100, 1000) ) {
	_vi115 = 1 ;
	while ( _vi115 <= setofSize(&typ[5]) ) {
	_vi116 = setofElem(&typ[5], _vi115) ;
	MapFreeSurface[_vi115-1 + 3*(_vi114-1) + 3000*(_vi91-1)] = 0 ;
	_vi115 += 1 ;
	}
	_vi114 += 1 ;
	}
	flag = 1 ;
	}
	}
	_vi96 += 1 ;
	}
	}
	else {
	inb = 0 ;
	flag = 0 ;
	VolumeWall = 0 ;
	dV_elementAdjusted = 0 ;
	_vi117 = 0 ;
	while ( _vi117 <= iHalfNodes ) {
	if( VolumeWall < VolumeFluid[_vi91-1] && flag == 0 ) {
	inbNodesLayer = _pow( (Nodes - 2 * _vi117) , 3,"Nodes - 2 * _vi117 ** 3" ) - _pow( (Nodes - 2 * (_vi117 + 1)) , 3,"Nodes - 2 * (_vi117 + 1) ** 3" ) ;
	inb = inbNodesLayer + inb ;
	VolumeWall = inb * dV_element ;
	}
	if( ! (VolumeWall < VolumeFluid[_vi91-1]) && flag == 0 ) {
	dV_elementAdjusted = dV_element - _divRI( (VolumeWall - VolumeFluid[_vi91-1]) , inbNodesLayer,"inbNodesLayer") ;
	iSurface = A22c1adc231b377ecd584fbb6cfaefff6(double(iHalfNodes), _vi117 + 1) ;
	flag = 1 ;
	}
	_vi117 += 1 ;
	}
	if( flag == 0 ) {
	dV_elementAdjusted = dV_element - (_pow( Nodes , 3.,"Nodes ** 3." ) * dV_element - VolumeFluid[_vi91-1])/28. ;
	iSurface = iHalfNodes ;
	flag = 1 ;
	}
	VolumeWallLoop = 0 ;
	_vi118 = 1 ;
	while ( _vi118 <= Nodes ) {
	_vi119 = 1 ;
	while ( _vi119 <= Nodes ) {
	_vi120 = 1 ;
	while ( _vi120 <= Nodes ) {
	if( _vi118 <= iSurface || _vi119 <= iSurface || _vi120 <= iSurface || _vi118 >= (Nodes + 1 - iSurface) || _vi119 >= (Nodes + 1 - iSurface) || _vi120 >= (Nodes + 1 - iSurface) ) {
	ConditionOnlyLastLayer = _vi118 == iSurface || _vi119 == iSurface || _vi120 == iSurface || _vi118 == (Nodes + 1 - iSurface) || _vi119 == (Nodes + 1 - iSurface) || _vi120 == (Nodes + 1 - iSurface) ;
	ConditionOnlyLastLayer = ConditionOnlyLastLayer && _vi118 >= iSurface && _vi119 >= iSurface && _vi120 >= iSurface && _vi118 <= (Nodes + 1 - iSurface) && _vi119 <= (Nodes + 1 - iSurface) && _vi120 <= (Nodes + 1 - iSurface) ;
	if( ConditionOnlyLastLayer ) {
	VolumeWallLoop = VolumeWallLoop + dV_elementAdjusted ;
	Ac1bf81150cedafec02bdcb41220855ae(n4, Nodes, _vi91, _vi118, _vi119, _vi120, MinertiaVolume, dV_elementAdjusted, OTankNodes) ;
	}
	else {
	VolumeWallLoop = VolumeWallLoop + dV_element ;
	Ac1bf81150cedafec02bdcb41220855ae(n4, Nodes, _vi91, _vi118, _vi119, _vi120, MinertiaVolume, dV_element, OTankNodes) ;
	}
	}
	_vi120 += 1 ;
	}
	_vi119 += 1 ;
	}
	_vi118 += 1 ;
	}
	_vi121 = 1 ;
	while ( _vi121 <= 3 ) {
	PointFreeSurfIndex[_vi121-1 + 3*(n4-1)] = iSurface ;
	_vi121 += 1 ;
	}
	iCentre = iHalfNodes + 1.01 ;
	_vi122 = 1 ;
	while ( _vi122 <= setofSize(&typ[5]) ) {
	_vi123 = setofElem(&typ[5], _vi122) ;
	PointFreeSurface[_vi122-1 + 3*(_vi91-1)] = OTankNodes[_vi122-1 + 3*(PointFreeSurfIndex[2 + 3*(_vi91-1)]-1) + __cf1_OTankNodes*(PointFreeSurfIndex[1 + 3*(_vi91-1)]-1) + __cf2_OTankNodes*(PointFreeSurfIndex[0 + 3*(_vi91-1)]-1) + __cf3_OTankNodes*(_vi91-1)] ;
	if( (2 * iHalfNodes) == Nodes ) {
	COMtank[_vi122-1 + 3*(_vi91-1)] = (OTankNodes[_vi122-1 + 3*(iCentre-1) + __cf1_OTankNodes*(iCentre-1) + __cf2_OTankNodes*(iCentre-1) + __cf3_OTankNodes*(_vi91-1)] + OTankNodes[_vi122-1 + 3*(iCentre - 1-1) + __cf1_OTankNodes*(iCentre - 1-1) + __cf2_OTankNodes*(iCentre - 1-1) + __cf3_OTankNodes*(_vi91-1)])/2. ;
	}
	else {
	COMtank[_vi122-1 + 3*(_vi91-1)] = OTankNodes[_vi122-1 + 3*(iCentre-1) + __cf1_OTankNodes*(iCentre-1) + __cf2_OTankNodes*(iCentre-1) + __cf3_OTankNodes*(_vi91-1)] ;
	}
	_vi122 += 1 ;
	}
	VolumeFluidApprox[_vi91-1] = VolumeFluid[_vi91-1] ;
	dPoutlet[_vi91-1] = 0 ;
	}
	_vi91 += 1 ;
	}
__end :
	delete[] IsoDeltaPmax;
	delete[] IsoDeltaPmin;
}



void SATELLITE__testGEO_default::copyBack( double dyn[], double ldr[] )
{
	dyn[0] = unkR[522] ;
	dyn[1] = unkR[523] ;
	dyn[2] = unkR[524] ;
	dyn[3] = unkR[48] ;
	dyn[4] = unkR[57] ;
	dyn[5] = unkR[49] ;
	dyn[6] = unkR[58] ;
	dyn[7] = unkR[50] ;
	dyn[8] = unkR[59] ;
	dyn[10] = unkR[228] ;
	dyn[11] = unkR[261] ;
	dyn[12] = unkR[229] ;
	dyn[13] = unkR[262] ;
	dyn[14] = unkR[230] ;
	dyn[15] = unkR[263] ;
	unkR[314] = unkR[310] ;
	dyn[16] = unkR[289] ;
	dyn[17] = unkR[290] ;
	dyn[18] = unkR[291] ;
	unkR[316] = unkR[311] ;
	unkR[318] = unkR[312] ;
	dyn[19] = unkR[196] ;
	dyn[20] = unkR[197] ;
	dyn[21] = unkR[198] ;
	dyn[22] = unkR[199] ;
	dyn[23] = unkR[14846] ;
	dyn[24] = unkR[14848] ;
	dyn[25] = unkR[14847] ;
	dyn[26] = unkR[14849] ;
	unkR[511] = unkR[507] ;
	unkR[513] = unkR[508] ;
	unkR[515] = unkR[509] ;
}



void SATELLITE__testGEO_default::initBlocks( double dyn[], double ldr[], double *_time )
{
	s_current= this;
	unkR[15092] = 1 ;
	unkR[15093] = 0 ;
	unkR[475] = 1 ;
	unkR[476] = 0 ;
	unkI[52] = 1 ;
	while ( unkI[52] <= 4 ) {
	unkR[522+(unkI[52]-1)] = 0 ;
	unkI[52] += 1 ;
	}
	unkR[593] = 1 ;
	unkR[594] = 0 ;
	unkR[609] = unkR[610]/300000000. ;
	dyn[9] = unkR[386] ;
	unkI[57] = 1 ;
	while ( unkI[57] <= setofSize(&typ[2]) ) {
	unkI[58] = setofElem(&typ[2], unkI[57]) ;
	unkR[228+(unkI[57]-1)] = 1 ;
	unkR[261+(unkI[57]-1)] = 1 ;
	unkI[57] += 1 ;
	}
	unkR[262] = 2 ;
	unkI[59] = 1 ;
	while ( unkI[59] <= setofSize(&typ[5]) ) {
	unkI[60] = setofElem(&typ[5], unkI[59]) ;
	unkR[289+(unkI[59]-1)] = A01bfbe1edd393b2c1ca09d44c931495b(unkR[394+(unkI[59]-1)]) ;
	unkI[59] += 1 ;
	}
	unkR[196] = 1 ;
	unkR[224] = 1 ;
	unkR[216] = 1 ;
	unkR[233] = 1 ;
	unkR[721] = unkR[720] * 0.886226925452758 ;
	unkR[14858] = unkR[1227] * unkR[721] * unkR[721] ;
	unkI[35] = 1 ;
	while ( unkI[35] <= cteI[22] ) {
	unkR[14846+(unkI[35]-1)] = unkR[14854+(unkI[35]-1)] ;
	if(!(unkR[14846+(unkI[35]-1)] < unkR[14858]))
	issueError(213,7,13,98,"SATCompo.el",749,"Tanks1.","ASSERT failed: %s","TANK FULL, fluid volume too high");

	unkI[35] += 1 ;
	}
	unkR[14869] = unkR[1227]/5. * unkR[721]/5. * unkR[721]/5. ;
	unkI[36] = 1 ;
	while ( unkI[36] <= cteI[22] ) {
	unkI[37] = 1 ;
	while ( unkI[37] <= setofSize(&typ[5]) ) {
	unkI[38] = setofElem(&typ[5], unkI[37]) ;
	unkR[15483] = 0 ;
	unkI[39] = 1 ;
	while ( unkI[39] <= setofSize(&typ[5]) ) {
	unkI[40] = setofElem(&typ[5], unkI[39]) ;
	unkR[15483] += _pow( unkR[14834+(unkI[39]-1)+3*(unkI[36]-1)] , 2.,"Tanks1.Torient[_vi125,_vi128] ** 2." ) ;
	unkI[39] += 1 ;
	}
	unkR[14885+(unkI[37]-1)+3*(unkI[36]-1)] = _div( unkR[14834+(unkI[37]-1)+3*(unkI[36]-1)] , _sqrt(unkR[15483],"_vr12"),"sqrt(_vr12)") ;
	unkI[37] += 1 ;
	}
	unkI[36] += 1 ;
	}
	unkI[42] = 1 ;
	while ( unkI[42] <= cteI[22] ) {
	unkI[43] = 1 ;
	while ( unkI[43] <= setofSize(&typ[5]) ) {
	unkI[44] = setofElem(&typ[5], unkI[43]) ;
	unkR[14879+(unkI[43]-1)] = unkR[14885+(unkI[43]-1)+3*(unkI[42]-1)] ;
	unkR[13284+(unkI[43]-1)] = unkR[13287+(unkI[43]-1)+3*(unkI[42]-1)] ;
	unkI[43] += 1 ;
	}
	A142a138dd7f7edde3cd3b31f7c280be6(&unkR[14879], &unkR[14879], "in Tanks eAZ") ;
	A2e8f4393cd4e00e633246fcac8ad105e(&unkR[14879], &unkR[14897], &unkR[14876]) ;
	if( A37bff279528b6317bb6373d02308ca80(&unkR[14876]) < 0.1 ) {
	A2e8f4393cd4e00e633246fcac8ad105e(&unkR[14900], &unkR[14879], &unkR[14876]) ;
	}
	A142a138dd7f7edde3cd3b31f7c280be6(&unkR[14876], &unkR[14876], "in Tanks eAY") ;
	A2e8f4393cd4e00e633246fcac8ad105e(&unkR[14876], &unkR[14879], &unkR[14873]) ;
	A142a138dd7f7edde3cd3b31f7c280be6(&unkR[14873], &unkR[14873], "in Tanks eAXZ") ;
	unkI[45] = 1 ;
	while ( unkI[45] <= cteI[20] ) {
	unkI[46] = 1 ;
	while ( unkI[46] <= cteI[20] ) {
	unkI[47] = 1 ;
	while ( unkI[47] <= cteI[20] ) {
	unkI[48] = 1 ;
	while ( unkI[48] <= setofSize(&typ[5]) ) {
	unkI[49] = setofElem(&typ[5], unkI[48]) ;
	unkR[13299+(unkI[48]-1)+3*(unkI[47]-1)+15*(unkI[46]-1)+75*(unkI[45]-1)+375*(unkI[42]-1)] = unkR[13284+(unkI[48]-1)] + unkR[14879+(unkI[48]-1)] * unkR[1227]/5. * (unkI[45] - 0.5 - 2.5) + unkR[14873+(unkI[48]-1)] * unkR[721]/5. * (unkI[46] - 0.5 - 2.5) + unkR[14876+(unkI[48]-1)] * unkR[721]/5. * (unkI[47] - 0.5 - 2.5) ;
	unkI[48] += 1 ;
	}
	unkI[47] += 1 ;
	}
	unkI[46] += 1 ;
	}
	unkI[45] += 1 ;
	}
	unkI[42] += 1 ;
	}
	unkI[31] = 125 ;
	PRINT(" Tanks discretisation completed with " + getValueAsString("Tanks1.nodesCube") + " nodes ") ;
	copyBack( dyn, ldr ) ;
}


void SATELLITE__testGEO_default::fres( double *_time, double dyn[], double der[], double res[] )
{
m_residuesEvals++;
s_current= this;
dcopy(27,ldr,der) ;
evalBoundsExp(*_time);
printDbgInfoForModel(-1,true);
unkR[522] = dyn[0] ;
unkR[523] = dyn[1] ;
unkR[524] = dyn[2] ;
unkR[48] = dyn[3] ;
unkR[57] = dyn[4] ;
unkR[49] = dyn[5] ;
unkR[58] = dyn[6] ;
unkR[50] = dyn[7] ;
unkR[59] = dyn[8] ;
unkR[228] = dyn[10] ;
unkR[261] = dyn[11] ;
unkR[229] = dyn[12] ;
unkR[262] = dyn[13] ;
unkR[230] = dyn[14] ;
unkR[263] = dyn[15] ;
unkR[507] = unkR[471] * unkR[522] * unkR[492] + unkR[472] * unkR[523] * unkR[495] + unkR[473] * unkR[524] * unkR[498] ;
unkR[310] = unkR[507] ;
unkR[314] = unkR[310] ;
unkR[289] = dyn[16] ;
unkR[290] = dyn[17] ;
unkR[291] = dyn[18] ;
unkR[508] = unkR[471] * unkR[522] * unkR[493] + unkR[472] * unkR[523] * unkR[496] + unkR[473] * unkR[524] * unkR[499] ;
unkR[311] = unkR[508] ;
unkR[316] = unkR[311] ;
unkR[509] = unkR[471] * unkR[522] * unkR[494] + unkR[472] * unkR[523] * unkR[497] + unkR[473] * unkR[524] * unkR[500] ;
unkR[312] = unkR[509] ;
unkR[318] = unkR[312] ;
unkR[196] = dyn[19] ;
unkR[197] = dyn[20] ;
unkR[198] = dyn[21] ;
unkR[199] = dyn[22] ;
unkR[14846] = dyn[23] ;
unkR[14848] = dyn[24] ;
unkR[14847] = dyn[25] ;
unkR[14849] = dyn[26] ;
 if(m_branchZone[17]==0)
	unkR[428] = unkR[705] ;
else unkR[428] = unkR[704] ;
unkR[443] = unkR[413] * unkR[428] ;
unkR[14907] = unkR[443] ;
 if(m_branchZone[18]==0)
	unkR[429] = unkR[705] ;
else unkR[429] = unkR[704] ;
unkR[444] = unkR[414] * unkR[429] ;
unkR[14908] = unkR[444] ;
 if(m_branchZone[19]==0)
	unkR[430] = unkR[705] ;
else unkR[430] = unkR[704] ;
unkR[445] = unkR[415] * unkR[430] ;
unkR[14909] = unkR[445] ;
 if(m_branchZone[20]==0)
	unkR[431] = unkR[705] ;
else unkR[431] = unkR[704] ;
unkR[446] = unkR[416] * unkR[431] ;
unkR[14910] = unkR[446] ;
 if(m_branchZone[21]==0)
	unkR[432] = unkR[705] ;
else unkR[432] = unkR[704] ;
unkR[447] = unkR[417] * unkR[432] ;
unkR[14911] = unkR[447] ;
 if(m_branchZone[22]==0)
	unkR[433] = unkR[705] ;
else unkR[433] = unkR[704] ;
unkR[448] = unkR[418] * unkR[433] ;
unkR[14912] = unkR[448] ;
 if(m_branchZone[23]==0)
	unkR[434] = unkR[705] ;
else unkR[434] = unkR[704] ;
unkR[449] = unkR[419] * unkR[434] ;
unkR[14913] = unkR[449] ;
 if(m_branchZone[24]==0)
	unkR[435] = unkR[705] ;
else unkR[435] = unkR[704] ;
unkR[450] = unkR[420] * unkR[435] ;
unkR[14914] = unkR[450] ;
 if(m_branchZone[25]==0)
	unkR[436] = unkR[705] ;
else unkR[436] = unkR[704] ;
unkR[451] = unkR[421] * unkR[436] ;
unkR[14915] = unkR[451] ;
 if(m_branchZone[26]==0)
	unkR[437] = unkR[705] ;
else unkR[437] = unkR[704] ;
unkR[452] = unkR[422] * unkR[437] ;
unkR[14916] = unkR[452] ;
 if(m_branchZone[27]==0)
	unkR[438] = unkR[705] ;
else unkR[438] = unkR[704] ;
unkR[453] = unkR[423] * unkR[438] ;
unkR[14917] = unkR[453] ;
 if(m_branchZone[28]==0)
	unkR[439] = unkR[705] ;
else unkR[439] = unkR[704] ;
unkR[454] = unkR[424] * unkR[439] ;
unkR[14918] = unkR[454] ;
 if(m_branchZone[29]==0)
	unkR[440] = unkR[705] ;
else unkR[440] = unkR[704] ;
unkR[455] = unkR[425] * unkR[440] ;
unkR[14919] = unkR[455] ;
 if(m_branchZone[30]==0)
	unkR[441] = unkR[705] ;
else unkR[441] = unkR[704] ;
unkR[456] = unkR[426] * unkR[441] ;
unkR[14920] = unkR[456] ;
 if(m_branchZone[31]==0)
	unkR[442] = unkR[705] ;
else unkR[442] = unkR[704] ;
unkR[457] = unkR[427] * unkR[442] ;
unkR[14921] = unkR[457] ;
unkR[15412] = unkR[15414] * unkR[14907] + unkR[15415] * unkR[14908] + unkR[15416] * unkR[14909] + unkR[15417] * unkR[14910] + unkR[15418] * unkR[14911] + unkR[15419] * unkR[14912] + unkR[15420] * unkR[14913] + unkR[15421] * unkR[14914] + unkR[15422] * unkR[14915] + unkR[15423] * unkR[14916] + unkR[15424] * unkR[14917] + unkR[15425] * unkR[14918] + unkR[15426] * unkR[14919] + unkR[15427] * unkR[14920] + unkR[15428] * unkR[14921] ;
unkR[15413] = unkR[15431] * unkR[14907] + unkR[15432] * unkR[14908] + unkR[15433] * unkR[14909] + unkR[15434] * unkR[14910] + unkR[15435] * unkR[14911] + unkR[15436] * unkR[14912] + unkR[15437] * unkR[14913] + unkR[15438] * unkR[14914] + unkR[15439] * unkR[14915] + unkR[15440] * unkR[14916] + unkR[15441] * unkR[14917] + unkR[15442] * unkR[14918] + unkR[15443] * unkR[14919] + unkR[15444] * unkR[14920] + unkR[15445] * unkR[14921] ;
unkR[15402] = unkR[14990] * unkR[14907] + unkR[14993] * unkR[14908] + unkR[14996] * unkR[14909] + unkR[14999] * unkR[14910] + unkR[15002] * unkR[14911] + unkR[15005] * unkR[14912] + unkR[15008] * unkR[14913] + unkR[15011] * unkR[14914] + unkR[15014] * unkR[14915] + unkR[15017] * unkR[14916] + unkR[15020] * unkR[14917] + unkR[15023] * unkR[14918] + unkR[15026] * unkR[14919] + unkR[15029] * unkR[14920] + unkR[15032] * unkR[14921] ;
unkR[15408] = unkR[15111] * unkR[14907] + unkR[15114] * unkR[14908] + unkR[15117] * unkR[14909] + unkR[15120] * unkR[14910] + unkR[15123] * unkR[14911] + unkR[15126] * unkR[14912] + unkR[15129] * unkR[14913] + unkR[15132] * unkR[14914] + unkR[15135] * unkR[14915] + unkR[15138] * unkR[14916] + unkR[15141] * unkR[14917] + unkR[15144] * unkR[14918] + unkR[15147] * unkR[14919] + unkR[15150] * unkR[14920] + unkR[15153] * unkR[14921] ;
unkR[695] = 0 ;
unkR[15405] = -unkR[695] ;
unkR[15403] = unkR[14991] * unkR[14907] + unkR[14994] * unkR[14908] + unkR[14997] * unkR[14909] + unkR[15000] * unkR[14910] + unkR[15003] * unkR[14911] + unkR[15006] * unkR[14912] + unkR[15009] * unkR[14913] + unkR[15012] * unkR[14914] + unkR[15015] * unkR[14915] + unkR[15018] * unkR[14916] + unkR[15021] * unkR[14917] + unkR[15024] * unkR[14918] + unkR[15027] * unkR[14919] + unkR[15030] * unkR[14920] + unkR[15033] * unkR[14921] ;
unkR[15409] = unkR[15112] * unkR[14907] + unkR[15115] * unkR[14908] + unkR[15118] * unkR[14909] + unkR[15121] * unkR[14910] + unkR[15124] * unkR[14911] + unkR[15127] * unkR[14912] + unkR[15130] * unkR[14913] + unkR[15133] * unkR[14914] + unkR[15136] * unkR[14915] + unkR[15139] * unkR[14916] + unkR[15142] * unkR[14917] + unkR[15145] * unkR[14918] + unkR[15148] * unkR[14919] + unkR[15151] * unkR[14920] + unkR[15154] * unkR[14921] ;
unkR[696] = 0 ;
unkR[15406] = -unkR[696] ;
unkR[15404] = unkR[14992] * unkR[14907] + unkR[14995] * unkR[14908] + unkR[14998] * unkR[14909] + unkR[15001] * unkR[14910] + unkR[15004] * unkR[14911] + unkR[15007] * unkR[14912] + unkR[15010] * unkR[14913] + unkR[15013] * unkR[14914] + unkR[15016] * unkR[14915] + unkR[15019] * unkR[14916] + unkR[15022] * unkR[14917] + unkR[15025] * unkR[14918] + unkR[15028] * unkR[14919] + unkR[15031] * unkR[14920] + unkR[15034] * unkR[14921] ;
unkR[15410] = unkR[15113] * unkR[14907] + unkR[15116] * unkR[14908] + unkR[15119] * unkR[14909] + unkR[15122] * unkR[14910] + unkR[15125] * unkR[14911] + unkR[15128] * unkR[14912] + unkR[15131] * unkR[14913] + unkR[15134] * unkR[14914] + unkR[15137] * unkR[14915] + unkR[15140] * unkR[14916] + unkR[15143] * unkR[14917] + unkR[15146] * unkR[14918] + unkR[15149] * unkR[14919] + unkR[15152] * unkR[14920] + unkR[15155] * unkR[14921] ;
unkR[697] = 0 ;
unkR[15407] = -unkR[697] ;
unkR[15411] = -unkR[15164] * unkR[14907] + -unkR[15165] * unkR[14908] + -unkR[15166] * unkR[14909] + -unkR[15167] * unkR[14910] + -unkR[15168] * unkR[14911] + -unkR[15169] * unkR[14912] + -unkR[15170] * unkR[14913] + -unkR[15171] * unkR[14914] + -unkR[15172] * unkR[14915] + -unkR[15173] * unkR[14916] + -unkR[15174] * unkR[14917] + -unkR[15175] * unkR[14918] + -unkR[15176] * unkR[14919] + -unkR[15177] * unkR[14920] + -unkR[15178] * unkR[14921] ;
unkR[15092] = (unkR[15041] + unkR[14939]) * 2. * 2. + (unkR[15042] + unkR[14940]) * 2. * 4. + (unkR[15043] + unkR[14941]) * 2. * 8. + (unkR[15094] + unkR[15465] + unkR[14922] + unkR[15181]) * 2. + (unkR[15044] + unkR[14942]) * 4. * 2. + (unkR[15045] + unkR[14943]) * 4. * 4. + (unkR[15046] + unkR[14944]) * 4. * 8. + (unkR[15095] + unkR[15466] + unkR[14923] + unkR[15182]) * 4. + (unkR[15047] + unkR[14945]) * 8. * 2. + (unkR[15048] + unkR[14946]) * 8. * 4. + (unkR[15049] + unkR[14947]) * 8. * 8. + (unkR[15096] + unkR[15467] + unkR[14924] + unkR[15183]) * 8. + (unkR[15050] + unkR[14948]) * 16. * 2. + (unkR[15051] + unkR[14949]) * 16. * 4. + (unkR[15052] + unkR[14950]) * 16. * 8. + (unkR[15097] + unkR[15468] + unkR[14925] + unkR[15184]) * 16. + (unkR[15053] + unkR[14951]) * 32. * 2. + (unkR[15054] + unkR[14952]) * 32. * 4. + (unkR[15055] + unkR[14953]) * 32. * 8. + (unkR[15098] + unkR[15469] + unkR[14926] + unkR[15185]) * 32. + (unkR[15056] + unkR[14954]) * 64. * 2. + (unkR[15057] + unkR[14955]) * 64. * 4. + (unkR[15058] + unkR[14956]) * 64. * 8. + (unkR[15099] + unkR[15470] + unkR[14927] + unkR[15186]) * 64. + (unkR[15059] + unkR[14957]) * 128. * 2. + (unkR[15060] + unkR[14958]) * 128. * 4. + (unkR[15061] + unkR[14959]) * 128. * 8. + (unkR[15100] + unkR[15471] + unkR[14928] + unkR[15187]) * 128. + (unkR[15062] + unkR[14960]) * 256. * 2. + (unkR[15063] + unkR[14961]) * 256. * 4. + (unkR[15064] + unkR[14962]) * 256. * 8. + (unkR[15101] + unkR[15472] + unkR[14929] + unkR[15188]) * 256. + (unkR[15065] + unkR[14963]) * 512. * 2. + (unkR[15066] + unkR[14964]) * 512. * 4. + (unkR[15067] + unkR[14965]) * 512. * 8. + (unkR[15102] + unkR[15473] + unkR[14930] + unkR[15189]) * 512. + (unkR[15068] + unkR[14966]) * 1024. * 2. + (unkR[15069] + unkR[14967]) * 1024. * 4. + (unkR[15070] + unkR[14968]) * 1024. * 8. + (unkR[15103] + unkR[15474] + unkR[14931] + unkR[15190]) * 1024. + (unkR[15071] + unkR[14969]) * 2048. * 2. + (unkR[15072] + unkR[14970]) * 2048. * 4. + (unkR[15073] + unkR[14971]) * 2048. * 8. + (unkR[15104] + unkR[15475] + unkR[14932] + unkR[15191]) * 2048. + (unkR[15074] + unkR[14972]) * 4096. * 2. + (unkR[15075] + unkR[14973]) * 4096. * 4. + (unkR[15076] + unkR[14974]) * 4096. * 8. + (unkR[15105] + unkR[15476] + unkR[14933] + unkR[15192]) * 4096. + (unkR[15077] + unkR[14975]) * 8192. * 2. + (unkR[15078] + unkR[14976]) * 8192. * 4. + (unkR[15079] + unkR[14977]) * 8192. * 8. + (unkR[15106] + unkR[15477] + unkR[14934] + unkR[15193]) * 8192. + (unkR[15080] + unkR[14978]) * 16384. * 2. + (unkR[15081] + unkR[14979]) * 16384. * 4. + (unkR[15082] + unkR[14980]) * 16384. * 8. + (unkR[15107] + unkR[15478] + unkR[14935] + unkR[15194]) * 16384. + (unkR[15083] + unkR[14981]) * 32768. * 2. + (unkR[15084] + unkR[14982]) * 32768. * 4. + (unkR[15085] + unkR[14983]) * 32768. * 8. + (unkR[15108] + unkR[15479] + unkR[14936] + unkR[15195]) * 32768. ;
unkR[15162] = unkR[14907] * 2. + unkR[14908] * 4. + unkR[14909] * 8. + unkR[14910] * 16. + unkR[14911] * 32. + unkR[14912] * 64. + unkR[14913] * 128. + unkR[14914] * 256. + unkR[14915] * 512. + unkR[14916] * 1024. + unkR[14917] * 2048. + unkR[14918] * 4096. + unkR[14919] * 8192. + unkR[14920] * 16384. + unkR[14921] * 32768. ;
A3552299060f7c98d37a7a0d8c37eb81d(&unkR[228], &unkR[261], &unkR[231], &unkR[384], &unkR[388], unkR[116], unkR[108], &unkR[73], &unkR[74], &unkR[72], &unkR[112], &unkR[387], &unkR[191], &unkR[404]);
A706849dac78113deb5787361fa82321d(unkR[231], unkR[384], unkR[388], &unkR[204]);
A5081ea99bec2b8ca0ea52666ac8f7f22(&unkR[204], &unkR[216]);
A18936a1f7169d6925ecb534df0335842(&unkR[216], &unkR[220]);
A5081ea99bec2b8ca0ea52666ac8f7f22(&unkR[196], &unkR[200]);
A56574614adcf365a4620cd0f26dcfbe7(&unkR[220], &unkR[200], &unkR[208], " operation Qorbinv,Q ");
A5081ea99bec2b8ca0ea52666ac8f7f22(&unkR[208], &unkR[224]);
A323f2b87d160fbb4d6b1756e2b19532c(&unkR[392], &unkR[405], &unkR[390], &unkR[224]);
unkR[279] = A3f5f23a7a3907152dae2b7f68f204c63(unkR[392], 0) ;
unkR[535] = unkR[279] ;
 if(m_branchZone[32]==0)
	unkR[539] = unkR[225] * unkR[538] + unkR[534] ;
else  if(m_branchZone[32]==1)
	unkR[539] = unkR[535] * unkR[538] + unkR[534] ;
else unkR[539] = unkR[534] ;
unkR[33] = cteR[5] * unkR[539] + cteR[2] ;
unkR[54] = unkR[33] ;
unkR[12] = unkR[30] - unkR[54] ;
unkR[24] = unkR[54] + unkR[12] ;
ldr[4] = _div( (unkR[54] - unkR[57]) , (unkR[6] * unkR[0]),"Cntrl_PID1.alpha[1] * Cntrl_PID1.Td[1]") ;
unkR[45] = unkR[21] * (unkR[9] * unkR[24] - unkR[54] - unkR[0] * ldr[4]) + unkR[48] ;
 if(m_branchZone[8]==0)
	unkR[36] = unkR[39] ;
else  if(m_branchZone[8]==1)
	unkR[36] = unkR[42] ;
else unkR[36] = unkR[45] ;
unkR[27] = unkR[36] ;
unkR[410] = unkR[407] * unkR[27] ;
unkR[529] = unkR[410] ;
ldr[0] = _div( (unkR[529] * 2. * cteR[0]/60. - unkR[522]) , unkR[533],"ReactionWheels1.tau") ;
unkR[526] = unkR[522] * 60./(2. * cteR[0]) ;
unkR[477] = -abs(_div( unkR[471] * ldr[0] * unkR[522] , unkR[458],"ReactionWheels1.ElectricalEfficiency")) ;
unkR[280] = A3f5f23a7a3907152dae2b7f68f204c63(unkR[405], 0) ;
unkR[536] = unkR[280] ;
 if(m_branchZone[33]==0)
	unkR[540] = unkR[226] * unkR[538] + unkR[534] ;
else  if(m_branchZone[33]==1)
	unkR[540] = unkR[536] * unkR[538] + unkR[534] ;
else unkR[540] = unkR[534] ;
unkR[34] = cteR[6] * unkR[540] + cteR[3] ;
unkR[55] = unkR[34] ;
unkR[13] = unkR[31] - unkR[55] ;
unkR[25] = unkR[55] + unkR[13] ;
ldr[6] = _div( (unkR[55] - unkR[58]) , (unkR[7] * unkR[1]),"Cntrl_PID1.alpha[2] * Cntrl_PID1.Td[2]") ;
unkR[46] = unkR[22] * (unkR[10] * unkR[25] - unkR[55] - unkR[1] * ldr[6]) + unkR[49] ;
 if(m_branchZone[11]==0)
	unkR[37] = unkR[40] ;
else  if(m_branchZone[11]==1)
	unkR[37] = unkR[43] ;
else unkR[37] = unkR[46] ;
unkR[28] = unkR[37] ;
unkR[411] = unkR[408] * unkR[28] ;
unkR[530] = unkR[411] ;
ldr[1] = _div( (unkR[530] * 2. * cteR[0]/60. - unkR[523]) , unkR[533],"ReactionWheels1.tau") ;
unkR[527] = unkR[523] * 60./(2. * cteR[0]) ;
unkR[478] = -abs(_div( unkR[472] * ldr[1] * unkR[523] , unkR[458],"ReactionWheels1.ElectricalEfficiency")) ;
unkR[278] = A3f5f23a7a3907152dae2b7f68f204c63(unkR[390], 0) ;
unkR[537] = unkR[278] ;
 if(m_branchZone[34]==0)
	unkR[541] = unkR[227] * unkR[538] + unkR[534] ;
else  if(m_branchZone[34]==1)
	unkR[541] = unkR[537] * unkR[538] + unkR[534] ;
else unkR[541] = unkR[534] ;
unkR[35] = cteR[7] * unkR[541] + cteR[4] ;
unkR[56] = unkR[35] ;
unkR[14] = unkR[32] - unkR[56] ;
unkR[26] = unkR[56] + unkR[14] ;
ldr[8] = _div( (unkR[56] - unkR[59]) , (unkR[8] * unkR[2]),"Cntrl_PID1.alpha[3] * Cntrl_PID1.Td[3]") ;
unkR[47] = unkR[23] * (unkR[11] * unkR[26] - unkR[56] - unkR[2] * ldr[8]) + unkR[50] ;
 if(m_branchZone[14]==0)
	unkR[38] = unkR[41] ;
else  if(m_branchZone[14]==1)
	unkR[38] = unkR[44] ;
else unkR[38] = unkR[47] ;
unkR[29] = unkR[38] ;
unkR[412] = unkR[409] * unkR[29] ;
unkR[531] = unkR[412] ;
ldr[2] = _div( (unkR[531] * 2. * cteR[0]/60. - unkR[524]) , unkR[533],"ReactionWheels1.tau") ;
unkR[528] = unkR[524] * 60./(2. * cteR[0]) ;
unkR[479] = -abs(_div( unkR[473] * ldr[2] * unkR[524] , unkR[458],"ReactionWheels1.ElectricalEfficiency")) ;
unkR[702] = 0 ;
unkR[520] = -unkR[702] ;
unkR[703] = 0 ;
unkR[521] = -unkR[703] ;
unkR[504] = 0 ;
unkR[516] = 0 ;
unkR[505] = 0 ;
unkR[517] = 0 ;
unkR[506] = 0 ;
unkR[518] = 0 ;
A4734c95e5416810119e160e39b7d4cc3(&unkR[196], &unkR[159]);
unkR[148] = unkR[149] + (*_time)/86400. ;
Afcc4eadac593fa8a73a0762b2622034c(unkR[148], &unkR[237], &unkR[241]);
unkR[249] = unkR[228] - unkR[241] ;
unkR[250] = unkR[229] - unkR[242] ;
unkR[251] = unkR[230] - unkR[243] ;
unkR[258] = -unkR[159] * unkR[249] + -unkR[160] * unkR[250] + -unkR[161] * unkR[251] ;
unkR[259] = -unkR[162] * unkR[249] + -unkR[163] * unkR[250] + -unkR[164] * unkR[251] ;
unkR[260] = -unkR[165] * unkR[249] + -unkR[166] * unkR[250] + -unkR[167] * unkR[251] ;
unkR[608] = A37bff279528b6317bb6373d02308ca80(&unkR[258]) ;
A142a138dd7f7edde3cd3b31f7c280be6(&unkR[258], &unkR[686], "in SolarArrays S.RSatSun");
unkR[668] = unkR[626] * unkR[686] + unkR[627] * unkR[687] + unkR[628] * unkR[688] ;
unkR[669] = unkR[629] * unkR[686] + unkR[630] * unkR[687] + unkR[631] * unkR[688] ;
unkR[670] = unkR[632] * unkR[686] + unkR[633] * unkR[687] + unkR[634] * unkR[688] ;
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,2, m_branchIf[2],0,"SolarArrays1.Automatic == 1");
unkR[674] = -unkR[626] * unkR[668] + -unkR[627] * unkR[669] + -unkR[628] * unkR[670] ;
}
else 
{
reportIfChangesBranch(*_time,2, m_branchIf[2],1,"ELSE");
unkR[674] = unkR[680] ;
}
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,3, m_branchIf[3],0,"SolarArrays1.Automatic == 1");
unkR[675] = -unkR[629] * unkR[668] + -unkR[630] * unkR[669] + -unkR[631] * unkR[670] ;
}
else 
{
reportIfChangesBranch(*_time,3, m_branchIf[3],1,"ELSE");
unkR[675] = unkR[681] ;
}
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,4, m_branchIf[4],0,"SolarArrays1.Automatic == 1");
unkR[676] = -unkR[632] * unkR[668] + -unkR[633] * unkR[669] + -unkR[634] * unkR[670] ;
}
else 
{
reportIfChangesBranch(*_time,4, m_branchIf[4],1,"ELSE");
unkR[676] = unkR[682] ;
}
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,0, m_branchIf[0],0,"SolarArrays1.Automatic == 1");
unkR[689] = unkR[674] * unkR[686] + unkR[675] * unkR[687] + unkR[676] * unkR[688] ;
}
else 
{
reportIfChangesBranch(*_time,0, m_branchIf[0],1,"ELSE");
unkR[689] = unkR[680] * unkR[686] + unkR[681] * unkR[687] + unkR[682] * unkR[688] ;
}
 if(m_branchZone[3]==0)
	unkR[606] = 0 ;
else unkR[606] = unkR[691] * unkR[610] * _pow( (_div( unkR[542] , unkR[608],"SolarArrays1.RSatSun_module")) , 2.,"SolarArrays1.AU / SolarArrays1.RSatSun_module ** 2." ) * Ad5577fc29943618f69ad5c843eba833c(0, unkR[689]) * unkR[547] ;
unkR[671] = unkR[635] * unkR[686] + unkR[636] * unkR[687] + unkR[637] * unkR[688] ;
unkR[672] = unkR[638] * unkR[686] + unkR[639] * unkR[687] + unkR[640] * unkR[688] ;
unkR[673] = unkR[641] * unkR[686] + unkR[642] * unkR[687] + unkR[643] * unkR[688] ;
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,7, m_branchIf[7],0,"SolarArrays1.Automatic == 1");
unkR[677] = -unkR[635] * unkR[671] + -unkR[636] * unkR[672] + -unkR[637] * unkR[673] ;
}
else 
{
reportIfChangesBranch(*_time,7, m_branchIf[7],1,"ELSE");
unkR[677] = unkR[683] ;
}
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,8, m_branchIf[8],0,"SolarArrays1.Automatic == 1");
unkR[678] = -unkR[638] * unkR[671] + -unkR[639] * unkR[672] + -unkR[640] * unkR[673] ;
}
else 
{
reportIfChangesBranch(*_time,8, m_branchIf[8],1,"ELSE");
unkR[678] = unkR[684] ;
}
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,9, m_branchIf[9],0,"SolarArrays1.Automatic == 1");
unkR[679] = -unkR[641] * unkR[671] + -unkR[642] * unkR[672] + -unkR[643] * unkR[673] ;
}
else 
{
reportIfChangesBranch(*_time,9, m_branchIf[9],1,"ELSE");
unkR[679] = unkR[685] ;
}
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,5, m_branchIf[5],0,"SolarArrays1.Automatic == 1");
unkR[690] = unkR[677] * unkR[686] + unkR[678] * unkR[687] + unkR[679] * unkR[688] ;
}
else 
{
reportIfChangesBranch(*_time,5, m_branchIf[5],1,"ELSE");
unkR[690] = unkR[683] * unkR[686] + unkR[684] * unkR[687] + unkR[685] * unkR[688] ;
}
 if(m_branchZone[7]==0)
	unkR[607] = 0 ;
else unkR[607] = unkR[691] * unkR[610] * _pow( (_div( unkR[542] , unkR[608],"SolarArrays1.RSatSun_module")) , 2.,"SolarArrays1.AU / SolarArrays1.RSatSun_module ** 2." ) * Ad5577fc29943618f69ad5c843eba833c(0, unkR[690]) * unkR[548] ;
unkR[701] = (unkR[606] + unkR[607]) * unkR[561] ;
unkR[322] = unkR[477] + unkR[478] + unkR[479] + unkR[701] + unkR[15411] ;
unkR[525] = 0 ;
unkR[475] = unkR[459] * 2. * 2. + unkR[460] * 2. * 4. + unkR[461] * 2. * 8. + unkR[471] * 2. + unkR[462] * 4. * 2. + unkR[463] * 4. * 4. + unkR[464] * 4. * 8. + unkR[472] * 4. + unkR[465] * 8. * 2. + unkR[466] * 8. * 4. + unkR[467] * 8. * 8. + unkR[473] * 8. ;
unkR[553] = 1. - unkR[552] + unkR[554] ;
unkR[255] = -unkR[159] * unkR[228] + -unkR[160] * unkR[229] + -unkR[161] * unkR[230] ;
unkR[256] = -unkR[162] * unkR[228] + -unkR[163] * unkR[229] + -unkR[164] * unkR[230] ;
unkR[257] = -unkR[165] * unkR[228] + -unkR[166] * unkR[229] + -unkR[167] * unkR[230] ;
A5b9efacac279f8201146501a406519f9(&unkR[258], &unkR[255], &unkI[3], &unkR[592]);
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,1, m_branchIf[1],0,"SolarArrays1.Automatic == 1");
unkR[604] = abs(unkR[689]) * unkR[609] * _pow( (_div( unkR[542] , unkR[608],"SolarArrays1.RSatSun_module")) , 2.,"SolarArrays1.AU / SolarArrays1.RSatSun_module ** 2." ) * unkR[547] ;
}
else 
{
reportIfChangesBranch(*_time,1, m_branchIf[1],1,"ELSE");
unkR[604] = Ad5577fc29943618f69ad5c843eba833c(0, unkR[689]) * unkR[609] * _pow( (_div( unkR[542] , unkR[608],"SolarArrays1.RSatSun_module")) , 2.,"SolarArrays1.AU / SolarArrays1.RSatSun_module ** 2." ) * unkR[547] ;
}
 if(m_branchZone[0]==0)
	unkR[555] = 0 ;
else unkR[555] = -unkR[686] * unkR[604] * unkR[552] - 2. * unkR[674] * unkR[604] * unkR[554] - (0.666666666666667 * unkR[674] + unkR[686]) * unkR[604] * unkR[553] ;
 if(m_branchZone[1]==0)
	unkR[556] = 0 ;
else unkR[556] = -unkR[687] * unkR[604] * unkR[552] - 2. * unkR[675] * unkR[604] * unkR[554] - (0.666666666666667 * unkR[675] + unkR[687]) * unkR[604] * unkR[553] ;
 if(m_branchZone[2]==0)
	unkR[557] = 0 ;
else unkR[557] = -unkR[688] * unkR[604] * unkR[552] - 2. * unkR[676] * unkR[604] * unkR[554] - (0.666666666666667 * unkR[676] + unkR[688]) * unkR[604] * unkR[553] ;
unkR[574] = unkR[555] ;
unkR[575] = unkR[556] ;
unkR[576] = unkR[557] ;
unkR[595] = unkR[644] * unkR[555] + unkR[645] * unkR[556] + unkR[646] * unkR[557] ;
unkR[596] = unkR[647] * unkR[555] + unkR[648] * unkR[556] + unkR[649] * unkR[557] ;
unkR[597] = unkR[650] * unkR[555] + unkR[651] * unkR[556] + unkR[652] * unkR[557] ;
if( unkR[551] == 1 ) 
{
reportIfChangesBranch(*_time,6, m_branchIf[6],0,"SolarArrays1.Automatic == 1");
unkR[605] = abs(unkR[690]) * unkR[609] * _pow( (_div( unkR[542] , unkR[608],"SolarArrays1.RSatSun_module")) , 2.,"SolarArrays1.AU / SolarArrays1.RSatSun_module ** 2." ) * unkR[548] ;
}
else 
{
reportIfChangesBranch(*_time,6, m_branchIf[6],1,"ELSE");
unkR[605] = Ad5577fc29943618f69ad5c843eba833c(0, unkR[690]) * unkR[609] * _pow( (_div( unkR[542] , unkR[608],"SolarArrays1.RSatSun_module")) , 2.,"SolarArrays1.AU / SolarArrays1.RSatSun_module ** 2." ) * unkR[548] ;
}
 if(m_branchZone[4]==0)
	unkR[558] = 0 ;
else unkR[558] = -unkR[686] * unkR[605] * unkR[552] - 2. * unkR[677] * unkR[605] * unkR[554] - (0.666666666666667 * unkR[677] + unkR[686]) * unkR[605] * unkR[553] ;
 if(m_branchZone[5]==0)
	unkR[559] = 0 ;
else unkR[559] = -unkR[687] * unkR[605] * unkR[552] - 2. * unkR[678] * unkR[605] * unkR[554] - (0.666666666666667 * unkR[678] + unkR[687]) * unkR[605] * unkR[553] ;
 if(m_branchZone[6]==0)
	unkR[560] = 0 ;
else unkR[560] = -unkR[688] * unkR[605] * unkR[552] - 2. * unkR[679] * unkR[605] * unkR[554] - (0.666666666666667 * unkR[679] + unkR[688]) * unkR[605] * unkR[553] ;
unkR[577] = unkR[558] ;
unkR[578] = unkR[559] ;
unkR[579] = unkR[560] ;
unkR[598] = unkR[653] * unkR[558] + unkR[654] * unkR[559] + unkR[655] * unkR[560] ;
unkR[599] = unkR[656] * unkR[558] + unkR[657] * unkR[559] + unkR[658] * unkR[560] ;
unkR[600] = unkR[659] * unkR[558] + unkR[660] * unkR[559] + unkR[661] * unkR[560] ;
unkR[692] = (unkR[574] + unkR[577]) * unkR[561] ;
unkR[698] = (unkR[595] + unkR[598]) * unkR[561] ;
unkR[693] = (unkR[575] + unkR[578]) * unkR[561] ;
unkR[694] = (unkR[576] + unkR[579]) * unkR[561] ;
A2e8f4393cd4e00e633246fcac8ad105e(&unkR[692], &unkR[182], &unkR[601]);
unkR[611] = unkR[698] + unkR[601] ;
unkR[699] = (unkR[596] + unkR[599]) * unkR[561] ;
unkR[612] = unkR[699] + unkR[602] ;
unkR[700] = (unkR[597] + unkR[600]) * unkR[561] ;
unkR[613] = unkR[700] + unkR[603] ;
unkR[593] = (unkR[580] + unkR[562] + unkR[614]) * 2. * 2. + (unkR[581] + unkR[563] + unkR[615]) * 2. * 4. + (unkR[582] + unkR[564] + unkR[616]) * 2. * 8. + (unkR[547] + unkR[543]) * 2. + (unkR[583] + unkR[565] + unkR[617]) * 4. * 2. + (unkR[584] + unkR[566] + unkR[618]) * 4. * 4. + (unkR[585] + unkR[567] + unkR[619]) * 4. * 8. + (unkR[548] + unkR[544]) * 4. ;
 if(m_branchZone[10]==0)
	unkR[51] = unkR[39] ;
else  if(m_branchZone[10]==1)
	unkR[51] = unkR[42] ;
else unkR[51] = unkR[48] ;
 if(m_branchZone[9]==0)
	unkR[15] = unkR[51] - unkR[48] ;
else unkR[15] = unkR[36] - unkR[45] ;
ldr[3] = _div( unkR[21] , unkR[3],"Cntrl_PID1.Ti[1]") * unkR[12] + _div( unkR[15] , (unkR[18] * unkR[3]),"Cntrl_PID1.gamma[1] * Cntrl_PID1.Ti[1]") ;
 if(m_branchZone[13]==0)
	unkR[52] = unkR[40] ;
else  if(m_branchZone[13]==1)
	unkR[52] = unkR[43] ;
else unkR[52] = unkR[49] ;
 if(m_branchZone[12]==0)
	unkR[16] = unkR[52] - unkR[49] ;
else unkR[16] = unkR[37] - unkR[46] ;
ldr[5] = _div( unkR[22] , unkR[4],"Cntrl_PID1.Ti[2]") * unkR[13] + _div( unkR[16] , (unkR[19] * unkR[4]),"Cntrl_PID1.gamma[2] * Cntrl_PID1.Ti[2]") ;
 if(m_branchZone[16]==0)
	unkR[53] = unkR[41] ;
else  if(m_branchZone[16]==1)
	unkR[53] = unkR[44] ;
else unkR[53] = unkR[50] ;
 if(m_branchZone[15]==0)
	unkR[17] = unkR[53] - unkR[50] ;
else unkR[17] = unkR[38] - unkR[47] ;
ldr[7] = _div( unkR[23] , unkR[5],"Cntrl_PID1.Ti[3]") * unkR[14] + _div( unkR[17] , (unkR[20] * unkR[5]),"Cntrl_PID1.gamma[3] * Cntrl_PID1.Ti[3]") ;
unkR[332] = unkR[14846] * unkR[14903] ;
unkR[333] = unkR[14847] * unkR[14904] ;
unkR[334] = unkR[14848] * unkR[14905] ;
unkR[335] = unkR[14849] * unkR[14906] ;
unkR[115] = unkR[332] + unkR[333] + unkR[334] + unkR[335] ;
unkR[726] = unkR[14846] * unkR[14903] + unkR[14847] * unkR[14904] + unkR[14848] * unkR[14905] + unkR[14849] * unkR[14906] ;
unkR[307] = unkR[692] + unkR[15402] ;
unkR[60] = _div( unkR[307] , dyn[9],"Frame1.mass") ;
unkR[273] = Ad45541ad370065f0c89d5eceabfbe70b(unkR[289]) ;
 if(m_branchZone[40]==0)
	unkR[14882] = unkR[60] ;
else unkR[14882] = A01bfbe1edd393b2c1ca09d44c931495b(unkR[273]) + 1e-015 ;
unkR[308] = unkR[693] + unkR[15403] ;
unkR[61] = _div( unkR[308] , dyn[9],"Frame1.mass") ;
unkR[274] = Ad45541ad370065f0c89d5eceabfbe70b(unkR[290]) ;
 if(m_branchZone[41]==0)
	unkR[14883] = unkR[61] ;
else unkR[14883] = A01bfbe1edd393b2c1ca09d44c931495b(unkR[274]) + 1e-015 ;
unkR[309] = unkR[694] + unkR[15404] ;
unkR[62] = _div( unkR[309] , dyn[9],"Frame1.mass") ;
unkR[275] = Ad45541ad370065f0c89d5eceabfbe70b(unkR[291]) ;
 if(m_branchZone[42]==0)
	unkR[14884] = unkR[62] ;
else unkR[14884] = A01bfbe1edd393b2c1ca09d44c931495b(unkR[275]) + 1e-015 ;
A142a138dd7f7edde3cd3b31f7c280be6(&unkR[14882], &unkR[14870], "in Tanks eAvalid");
unkR[14814] = A01bfbe1edd393b2c1ca09d44c931495b(unkR[273]) + 1e-015 ;
unkR[14815] = A01bfbe1edd393b2c1ca09d44c931495b(unkR[274]) + 1e-015 ;
unkR[14816] = A01bfbe1edd393b2c1ca09d44c931495b(unkR[275]) + 1e-015 ;
A142a138dd7f7edde3cd3b31f7c280be6(&unkR[14814], &unkR[14811], "in Tanks OmegaZvalid");
A2e8f4393cd4e00e633246fcac8ad105e(&unkR[14870], &unkR[14811], &unkR[14808]);
A2e8f4393cd4e00e633246fcac8ad105e(&unkR[14811], &unkR[14897], &unkR[14859]);
A2e8f4393cd4e00e633246fcac8ad105e(&unkR[14900], &unkR[14811], &unkR[14862]);
 if(m_branchZone[43]==0)
	unkR[14805] = unkR[14808] ;
else  if(m_branchZone[43]==1)
	unkR[14805] = unkR[14859] ;
else unkR[14805] = unkR[14862] ;
 if(m_branchZone[44]==0)
	unkR[14806] = unkR[14809] ;
else  if(m_branchZone[44]==1)
	unkR[14806] = unkR[14860] ;
else unkR[14806] = unkR[14863] ;
 if(m_branchZone[45]==0)
	unkR[14807] = unkR[14810] ;
else  if(m_branchZone[45]==1)
	unkR[14807] = unkR[14861] ;
else unkR[14807] = unkR[14864] ;
A2e8f4393cd4e00e633246fcac8ad105e(&unkR[14805], &unkR[14811], &unkR[14799]);
A2e8f4393cd4e00e633246fcac8ad105e(&unkR[14811], &unkR[14799], &unkR[14802]);
A7e3eef3b3fb41ec3b95eb000dd6132a9(&unkR[14799], &unkR[14802], &unkR[14811], &unkR[13273]);
unkR[13283] = A01bfbe1edd393b2c1ca09d44c931495b(A37bff279528b6317bb6373d02308ca80(&unkR[273])) ;
unkR[13282] = A37bff279528b6317bb6373d02308ca80(&unkR[60]) ;
unkR[706] = A58d39c798cf21ee9da59291fcc4e750d(&unkR[14811], &unkR[14870], &unkR[297], &unkR[403]) ;
A05270a6e1dc60e8d34e8fde61ecf7f7b(cteI[22], cteI[20], &unkR[13273], &unkR[182], unkR[13283], unkR[13282], unkR[403], unkR[297], &unkR[14903], &unkR[13299], &unkR[727]);
unkR[722] = -(unkR[60] * unkR[14885] + unkR[61] * unkR[14886] + unkR[62] * unkR[14887]) ;
unkR[723] = -(unkR[60] * unkR[14888] + unkR[61] * unkR[14889] + unkR[62] * unkR[14890]) ;
unkR[724] = -(unkR[60] * unkR[14891] + unkR[61] * unkR[14892] + unkR[62] * unkR[14893]) ;
unkR[725] = -(unkR[60] * unkR[14894] + unkR[61] * unkR[14895] + unkR[62] * unkR[14896]) ;
A89a348f8b00d02597dab097b75f2b2c3(cteI[22], cteI[20], &unkR[727], &unkR[722], &unkR[14846], unkR[14869], &unkR[13273], &unkR[13299], &unkR[708], &unkR[14830], &unkR[14865], &unkI[19], &unkR[14817], &unkR[14850], &unkR[1228], &unkI[32], &unkR[13237]);
unkR[377] = _div( 1. , unkR[726],"Tanks1.FluidMassTanks") * (unkR[14846] * unkR[14903] * unkR[708] + unkR[14847] * unkR[14904] * unkR[711] + unkR[14848] * unkR[14905] * unkR[714] + unkR[14849] * unkR[14906] * unkR[717]) ;
unkR[378] = _div( 1. , unkR[726],"Tanks1.FluidMassTanks") * (unkR[14846] * unkR[14903] * unkR[709] + unkR[14847] * unkR[14904] * unkR[712] + unkR[14848] * unkR[14905] * unkR[715] + unkR[14849] * unkR[14906] * unkR[718]) ;
unkR[379] = _div( 1. , unkR[726],"Tanks1.FluidMassTanks") * (unkR[14846] * unkR[14903] * unkR[710] + unkR[14847] * unkR[14904] * unkR[713] + unkR[14848] * unkR[14905] * unkR[716] + unkR[14849] * unkR[14906] * unkR[719]) ;
unkR[13228] = unkR[14903] * unkR[13237] + unkR[14904] * unkR[13246] + unkR[14905] * unkR[13255] + unkR[14906] * unkR[13264] ;
unkR[13229] = unkR[14903] * unkR[13238] + unkR[14904] * unkR[13247] + unkR[14905] * unkR[13256] + unkR[14906] * unkR[13265] ;
unkR[13230] = unkR[14903] * unkR[13239] + unkR[14904] * unkR[13248] + unkR[14905] * unkR[13257] + unkR[14906] * unkR[13266] ;
unkR[13231] = unkR[14903] * unkR[13240] + unkR[14904] * unkR[13249] + unkR[14905] * unkR[13258] + unkR[14906] * unkR[13267] ;
unkR[13232] = unkR[14903] * unkR[13241] + unkR[14904] * unkR[13250] + unkR[14905] * unkR[13259] + unkR[14906] * unkR[13268] ;
unkR[13233] = unkR[14903] * unkR[13242] + unkR[14904] * unkR[13251] + unkR[14905] * unkR[13260] + unkR[14906] * unkR[13269] ;
unkR[13234] = unkR[14903] * unkR[13243] + unkR[14904] * unkR[13252] + unkR[14905] * unkR[13261] + unkR[14906] * unkR[13270] ;
unkR[13235] = unkR[14903] * unkR[13244] + unkR[14904] * unkR[13253] + unkR[14905] * unkR[13262] + unkR[14906] * unkR[13271] ;
unkR[13236] = unkR[14903] * unkR[13245] + unkR[14904] * unkR[13254] + unkR[14905] * unkR[13263] + unkR[14906] * unkR[13272] ;
A258ec9a890dd211ddeef7f6b9d43979a(&unkR[13228], &unkR[377], unkR[726], &unkR[368], 0);
unkR[84] = abs(unkR[377]) + abs(unkR[378]) + abs(unkR[379]) + unkR[115]/1000. + (_sqrt(unkR[368]/1000.,"Frame1.if.InertiaMatrixFluids[x,x] / 1000.") + _sqrt(unkR[372]/1000.,"Frame1.if.InertiaMatrixFluids[y,y] / 1000.") + _sqrt(unkR[376]/1000.,"Frame1.if.InertiaMatrixFluids[z,z] / 1000."))/10. ;
unkR[281] = (*_time)/86400. + unkR[106] + 2. ;
unkR[323] = unkR[15412] ;
unkR[324] = unkR[15413] ;
ldr[9] = unkR[323] + unkR[324] ;
ldr[10] = unkR[261] ;
unkR[233] = A37bff279528b6317bb6373d02308ca80(&unkR[228]) ;
unkR[69] = unkR[159] * unkR[60] + unkR[162] * unkR[61] + unkR[165] * unkR[62] ;
unkR[245] = unkR[241] + unkR[249] - unkR[237] ;
unkR[246] = unkR[242] + unkR[250] - unkR[238] ;
unkR[247] = unkR[243] + unkR[251] - unkR[239] ;
unkR[248] = A37bff279528b6317bb6373d02308ca80(&unkR[245]) ;
unkR[240] = A37bff279528b6317bb6373d02308ca80(&unkR[237]) ;
unkR[252] = A37bff279528b6317bb6373d02308ca80(&unkR[249]) ;
unkR[244] = A37bff279528b6317bb6373d02308ca80(&unkR[241]) ;
unkR[193] = (_div( -unkR[117] , _pow( unkR[248] , 3.,"Frame1.RmoonSat_module ** 3." ),"Frame1.RmoonSat_module ** 3.") * unkR[245] - _div( unkR[117] , _pow( unkR[240] , 3.,"Frame1.ReMo_module ** 3." ),"Frame1.ReMo_module ** 3.") * unkR[237] + _div( -unkR[118] , _pow( unkR[252] , 3.,"Frame1.RsunSat_module ** 3." ),"Frame1.RsunSat_module ** 3.") * unkR[249] - _div( unkR[118] , _pow( unkR[244] , 3.,"Frame1.ReS_module ** 3." ),"Frame1.ReS_module ** 3.") * unkR[241]) * dyn[9] ;
A4734c95e5416810119e160e39b7d4cc3(&unkR[216], &unkR[150]);
unkR[66] = -(_div( 1.5 * unkR[107] * unkR[116] * _pow( unkR[108] , 2.,"Frame1.EarthR ** 2." ) , _pow( unkR[233] , 4.,"Frame1.R_module ** 4." ),"Frame1.R_module ** 4.")) * sin(2. * unkR[388]) * _pow( sin(unkR[384]) , 2.,"sin(Frame1.inc) ** 2." ) ;
unkR[67] = _div( 1.5 * unkR[107] * unkR[116] * _pow( unkR[108] , 2.,"Frame1.EarthR ** 2." ) , _pow( unkR[233] , 4.,"Frame1.R_module ** 4." ),"Frame1.R_module ** 4.") * sin(unkR[388]) * sin(2. * unkR[384]) ;
unkR[68] = -(_div( 1.5 * unkR[107] * unkR[116] * _pow( unkR[108] , 2.,"Frame1.EarthR ** 2." ) , _pow( unkR[233] , 4.,"Frame1.R_module ** 4." ),"Frame1.R_module ** 4.")) * (3. * _pow( sin(unkR[388]) , 2.,"sin(Frame1.omPHI) ** 2." ) * _pow( sin(unkR[384]) , 2.,"sin(Frame1.inc) ** 2." ) - 1.) ;
unkR[63] = unkR[150] * unkR[66] + unkR[153] * unkR[67] + unkR[156] * unkR[68] ;
ldr[11] = _div( -unkR[116] , _pow( unkR[233] , 3.,"Frame1.R_module ** 3." ),"Frame1.R_module ** 3.") * unkR[228] + unkR[69] + _div( unkR[193] , dyn[9],"Frame1.mass") * unkR[113] + unkR[63] * unkR[114] ;
ldr[12] = unkR[262] ;
unkR[70] = unkR[160] * unkR[60] + unkR[163] * unkR[61] + unkR[166] * unkR[62] ;
unkR[194] = (_div( -unkR[117] , _pow( unkR[248] , 3.,"Frame1.RmoonSat_module ** 3." ),"Frame1.RmoonSat_module ** 3.") * unkR[246] - _div( unkR[117] , _pow( unkR[240] , 3.,"Frame1.ReMo_module ** 3." ),"Frame1.ReMo_module ** 3.") * unkR[238] + _div( -unkR[118] , _pow( unkR[252] , 3.,"Frame1.RsunSat_module ** 3." ),"Frame1.RsunSat_module ** 3.") * unkR[250] - _div( unkR[118] , _pow( unkR[244] , 3.,"Frame1.ReS_module ** 3." ),"Frame1.ReS_module ** 3.") * unkR[242]) * dyn[9] ;
unkR[64] = unkR[151] * unkR[66] + unkR[154] * unkR[67] + unkR[157] * unkR[68] ;
ldr[13] = _div( -unkR[116] , _pow( unkR[233] , 3.,"Frame1.R_module ** 3." ),"Frame1.R_module ** 3.") * unkR[229] + unkR[70] + _div( unkR[194] , dyn[9],"Frame1.mass") * unkR[113] + unkR[64] * unkR[114] ;
ldr[14] = unkR[263] ;
unkR[71] = unkR[161] * unkR[60] + unkR[164] * unkR[61] + unkR[167] * unkR[62] ;
unkR[195] = (_div( -unkR[117] , _pow( unkR[248] , 3.,"Frame1.RmoonSat_module ** 3." ),"Frame1.RmoonSat_module ** 3.") * unkR[247] - _div( unkR[117] , _pow( unkR[240] , 3.,"Frame1.ReMo_module ** 3." ),"Frame1.ReMo_module ** 3.") * unkR[239] + _div( -unkR[118] , _pow( unkR[252] , 3.,"Frame1.RsunSat_module ** 3." ),"Frame1.RsunSat_module ** 3.") * unkR[251] - _div( unkR[118] , _pow( unkR[244] , 3.,"Frame1.ReS_module ** 3." ),"Frame1.ReS_module ** 3.") * unkR[243]) * dyn[9] ;
unkR[65] = unkR[152] * unkR[66] + unkR[155] * unkR[67] + unkR[158] * unkR[68] ;
ldr[15] = _div( -unkR[116] , _pow( unkR[233] , 3.,"Frame1.R_module ** 3." ),"Frame1.R_module ** 3.") * unkR[230] + unkR[71] + _div( unkR[195] , dyn[9],"Frame1.mass") * unkR[113] + unkR[65] * unkR[114] ;
unkR[319] = unkR[698] + unkR[15408] ;
A2e8f4393cd4e00e633246fcac8ad105e(&unkR[307], &unkR[182], &unkR[177]);
unkR[510] = unkR[471] * ldr[0] * unkR[492] + unkR[472] * ldr[1] * unkR[495] + unkR[473] * ldr[2] * unkR[498] ;
unkR[313] = unkR[510] ;
Aed7dc2c11dad22ced17f49d6c0566a88(&unkR[289], &unkR[75]);
unkR[320] = unkR[699] + unkR[15409] ;
unkR[512] = unkR[471] * ldr[0] * unkR[493] + unkR[472] * ldr[1] * unkR[496] + unkR[473] * ldr[2] * unkR[499] ;
unkR[315] = unkR[512] ;
unkR[321] = unkR[700] + unkR[15410] ;
unkR[514] = unkR[471] * ldr[0] * unkR[494] + unkR[472] * ldr[1] * unkR[497] + unkR[473] * ldr[2] * unkR[500] ;
unkR[317] = unkR[514] ;
unkR[119] = unkR[122] * unkR[289] + unkR[123] * unkR[290] + unkR[124] * unkR[291] ;
unkR[120] = unkR[125] * unkR[289] + unkR[126] * unkR[290] + unkR[127] * unkR[291] ;
unkR[121] = unkR[128] * unkR[289] + unkR[129] * unkR[290] + unkR[130] * unkR[291] ;
{
double coef[3][3], indep[3];
int n= 3,nrhs= 1 ,ipiv[3],info;
coef[0][0]= -unkR[122];
coef[1][0]= -unkR[123];
coef[2][0]= -unkR[124];
coef[0][1]= -unkR[125];
coef[1][1]= -unkR[126];
coef[2][1]= -unkR[127];
coef[0][2]= -unkR[128];
coef[1][2]= -unkR[129];
coef[2][2]= -unkR[130];
indep[0]= -(unkR[319] + unkR[177] - unkR[313] - (unkR[75] * unkR[310] + unkR[76] * unkR[311] + unkR[77] * unkR[312]) - (unkR[75] * unkR[119] + unkR[76] * unkR[120] + unkR[77] * unkR[121]));
indep[1]= -(unkR[320] + unkR[178] - unkR[315] - (unkR[78] * unkR[310] + unkR[79] * unkR[311] + unkR[80] * unkR[312]) - (unkR[78] * unkR[119] + unkR[79] * unkR[120] + unkR[80] * unkR[121]));
indep[2]= -(unkR[321] + unkR[179] - unkR[317] - (unkR[81] * unkR[310] + unkR[82] * unkR[311] + unkR[83] * unkR[312]) - (unkR[81] * unkR[119] + unkR[82] * unkR[120] + unkR[83] * unkR[121]));

wDGESV(&n,&nrhs,(double*)coef,&n,ipiv,indep,&n,&info);
checkErrorInDgesv(info,1);

ldr[16] = indep[0];
ldr[17] = indep[1];
ldr[18] = indep[2];
}
unkR[282] = unkR[319] + unkR[177] ;
unkR[283] = unkR[320] + unkR[178] ;
unkR[284] = unkR[321] + unkR[179] ;
A9ec5c002b3ec152a1a2fc48d1658bcdc(&unkR[289], &unkR[90]);
ldr[19] = 0.5 * (unkR[90] * unkR[196] + unkR[91] * unkR[197] + unkR[92] * unkR[198] + unkR[93] * unkR[199]) ;
ldr[20] = 0.5 * (unkR[94] * unkR[196] + unkR[95] * unkR[197] + unkR[96] * unkR[198] + unkR[97] * unkR[199]) ;
ldr[21] = 0.5 * (unkR[98] * unkR[196] + unkR[99] * unkR[197] + unkR[100] * unkR[198] + unkR[101] * unkR[199]) ;
ldr[22] = 0.5 * (unkR[102] * unkR[196] + unkR[103] * unkR[197] + unkR[104] * unkR[198] + unkR[105] * unkR[199]) ;
unkR[306] = unkR[322] ;
unkR[267] = Ad45541ad370065f0c89d5eceabfbe70b(ldr[16]) ;
unkR[268] = Ad45541ad370065f0c89d5eceabfbe70b(ldr[17]) ;
unkR[269] = Ad45541ad370065f0c89d5eceabfbe70b(ldr[18]) ;
unkR[254] = A3f5f23a7a3907152dae2b7f68f204c63(unkR[231], 0) ;
unkR[276] = A3f5f23a7a3907152dae2b7f68f204c63(unkR[384], 0) ;
unkR[277] = A3f5f23a7a3907152dae2b7f68f204c63(unkR[388], 0) ;
unkR[253] = unkR[281] * 86400. ;
A2e8f4393cd4e00e633246fcac8ad105e(&unkR[228], &unkR[261], &unkR[325]);
unkR[292] = unkR[289] - (_div( unkR[159] * unkR[325] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.") + _div( unkR[160] * unkR[326] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.") + _div( unkR[161] * unkR[327] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.")) ;
unkR[270] = Ad45541ad370065f0c89d5eceabfbe70b(unkR[292]) ;
unkR[264] = unkR[159] * unkR[261] + unkR[160] * unkR[262] + unkR[161] * unkR[263] ;
unkR[293] = unkR[290] - (_div( unkR[162] * unkR[325] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.") + _div( unkR[163] * unkR[326] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.") + _div( unkR[164] * unkR[327] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.")) ;
unkR[271] = Ad45541ad370065f0c89d5eceabfbe70b(unkR[293]) ;
unkR[265] = unkR[162] * unkR[261] + unkR[163] * unkR[262] + unkR[164] * unkR[263] ;
unkR[294] = unkR[291] - (_div( unkR[165] * unkR[325] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.") + _div( unkR[166] * unkR[326] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.") + _div( unkR[167] * unkR[327] , _pow( unkR[233] , 2.,"Frame1.R_module ** 2." ),"Frame1.R_module ** 2.")) ;
unkR[272] = Ad45541ad370065f0c89d5eceabfbe70b(unkR[294]) ;
unkR[266] = unkR[165] * unkR[261] + unkR[166] * unkR[262] + unkR[167] * unkR[263] ;
unkR[285] = A37bff279528b6317bb6373d02308ca80(&unkR[261]) ;
unkR[110] = A3f5f23a7a3907152dae2b7f68f204c63(_asin(A22c1adc231b377ecd584fbb6cfaefff6(1, Ad5577fc29943618f69ad5c843eba833c(-1, sin(unkR[384]) * sin(unkR[388]))),"MATH.min(1, MATH.max(-1, sin(Frame1.inc) * sin(Frame1.omPHI)))"), 0) ;
 if(m_branchZone[35]==0)
	unkR[111] = A3f5f23a7a3907152dae2b7f68f204c63(unkR[231] + unkR[388], 0) ;
else unkR[111] = A3f5f23a7a3907152dae2b7f68f204c63(unkR[231] + _asin(A22c1adc231b377ecd584fbb6cfaefff6(1, Ad5577fc29943618f69ad5c843eba833c(-1, _div( tan(unkR[110]) , tan(unkR[384]),"tan(Frame1.inc)"))),"MATH.min(1, MATH.max(-1, tan(Frame1.EciLatituded) / tan(Frame1.inc)))"), 0) ;
A5081ea99bec2b8ca0ea52666ac8f7f22(&unkR[196], &unkR[212]);
unkR[401] = unkR[233] - A37bff279528b6317bb6373d02308ca80(&unkR[234]) ;
unkR[402] = unkR[285] - A37bff279528b6317bb6373d02308ca80(&unkR[286]) ;
unkR[328] = A37bff279528b6317bb6373d02308ca80(&unkR[325]) ;
unkR[397] = unkR[325] - unkR[329] ;
unkR[398] = unkR[326] - unkR[330] ;
unkR[399] = unkR[327] - unkR[331] ;
unkR[140] = unkR[393] + unkR[406] + unkR[391] + unkR[296] + unkR[295] + unkR[385] + unkR[232] + unkR[389] + unkR[192] + unkR[113] + unkR[114] + unkR[386] + unkR[185] + unkR[186] + unkR[187] ;
unkR[340] = unkR[13283] ;
unkR[181] = unkR[340] ;
unkR[341] = unkR[13282] ;
unkR[180] = unkR[341] ;
unkR[342] = unkR[403] ;
unkR[168] = unkR[13273] ;
unkR[171] = unkR[13276] ;
unkR[174] = unkR[13279] ;
unkR[169] = unkR[13274] ;
unkR[172] = unkR[13277] ;
unkR[175] = unkR[13280] ;
unkR[170] = unkR[13275] ;
unkR[173] = unkR[13278] ;
unkR[176] = unkR[13281] ;
unkR[336] = unkR[14903] ;
unkR[380] = unkR[14830] ;
 if(m_branchZone[36]==0)
	unkR[298] = 0 ;
else unkR[298] = Ae3d23ead747eef5080f2dd0780dd1565(&unkR[168], &unkR[182], unkR[181], unkR[180], unkR[403], unkR[297], unkR[336], &unkR[188]) - unkR[380] ;
unkR[337] = unkR[14904] ;
unkR[381] = unkR[14831] ;
 if(m_branchZone[37]==0)
	unkR[299] = 0 ;
else unkR[299] = Ae3d23ead747eef5080f2dd0780dd1565(&unkR[168], &unkR[182], unkR[181], unkR[180], unkR[403], unkR[297], unkR[337], &unkR[188]) - unkR[381] ;
unkR[338] = unkR[14905] ;
unkR[382] = unkR[14832] ;
 if(m_branchZone[38]==0)
	unkR[300] = 0 ;
else unkR[300] = Ae3d23ead747eef5080f2dd0780dd1565(&unkR[168], &unkR[182], unkR[181], unkR[180], unkR[403], unkR[297], unkR[338], &unkR[188]) - unkR[382] ;
unkR[339] = unkR[14906] ;
unkR[383] = unkR[14833] ;
 if(m_branchZone[39]==0)
	unkR[301] = 0 ;
else unkR[301] = Ae3d23ead747eef5080f2dd0780dd1565(&unkR[168], &unkR[182], unkR[181], unkR[180], unkR[403], unkR[297], unkR[339], &unkR[188]) - unkR[383] ;
if( 0 ) 
{
reportIfChangesBranch(*_time,10, m_branchIf[10],0," FALSE ");
ldr[23] = _div( unkR[323] , unkR[14903],"Tanks1.rho[1]") + _div( unkR[324] , unkR[14904],"Tanks1.rho[2]") ;
}
else if( 0 ) 
{
reportIfChangesBranch(*_time,10, m_branchIf[10],1," FALSE ");
ldr[23] = _div( unkR[323] , unkR[14903],"Tanks1.rho[1]") ;
}
else 
{
reportIfChangesBranch(*_time,10, m_branchIf[10],2,"ELSE");
ldr[23] = _div( unkR[323] , unkR[14903],"Tanks1.rho[1]") * 0.5 ;
}
if( 0 ) 
{
reportIfChangesBranch(*_time,11, m_branchIf[11],0," FALSE ");
ldr[24] = _div( unkR[323] , unkR[14903],"Tanks1.rho[1]") + _div( unkR[324] , unkR[14904],"Tanks1.rho[2]") ;
}
else if( 0 ) 
{
reportIfChangesBranch(*_time,11, m_branchIf[11],1," FALSE ");
ldr[24] = _div( unkR[323] , unkR[14903],"Tanks1.rho[1]") ;
}
else 
{
reportIfChangesBranch(*_time,11, m_branchIf[11],2,"ELSE");
ldr[24] = _div( unkR[323] , unkR[14903],"Tanks1.rho[1]") * 0.5 ;
}
if( 0 ) 
{
reportIfChangesBranch(*_time,12, m_branchIf[12],0," FALSE ");
ldr[25] = _div( unkR[324] , unkR[14904],"Tanks1.rho[2]") ;
}
else 
{
reportIfChangesBranch(*_time,12, m_branchIf[12],1,"ELSE");
ldr[25] = _div( unkR[324] , unkR[14904],"Tanks1.rho[2]") * 0.5 ;
}
if( 0 ) 
{
reportIfChangesBranch(*_time,13, m_branchIf[13],0," FALSE ");
ldr[26] = _div( unkR[324] , unkR[14904],"Tanks1.rho[2]") ;
}
else 
{
reportIfChangesBranch(*_time,13, m_branchIf[13],1,"ELSE");
ldr[26] = _div( unkR[324] , unkR[14904],"Tanks1.rho[2]") * 0.5 ;
}
unkR[707] = _div( unkR[14903] * _sqrt(_pow( unkR[13282] , 2.,"Tanks1.NAccel ** 2." ) + _pow( (_pow( unkR[13283] , 2.,"Tanks1.NOmeg ** 2." ) * unkR[720]) , 2.,"Tanks1.NOmeg ** 2. * Tanks1.D ** 2." ),"Tanks1.NAccel ** 2. + (Tanks1.NOmeg ** 2. * Tanks1.D) ** 2.") * unkR[720] , (_div( unkR[14829] , unkR[720],"Tanks1.D")),"Tanks1.SurfTensionWater / Tanks1.D") ;
unkR[356] = unkR[14817] ;
unkR[357] = unkR[14818] ;
unkR[358] = unkR[14819] ;
unkR[359] = unkR[14820] ;
unkR[360] = unkR[14821] ;
unkR[361] = unkR[14822] ;
unkR[362] = unkR[14823] ;
unkR[363] = unkR[14824] ;
unkR[364] = unkR[14825] ;
unkR[365] = unkR[14826] ;
unkR[366] = unkR[14827] ;
unkR[367] = unkR[14828] ;
unkR[343] = unkR[297] ;
unkR[344] = unkR[182] ;
unkR[345] = unkR[183] ;
unkR[346] = unkR[184] ;
unkR[347] = unkR[13273] ;
unkR[348] = unkR[13276] ;
unkR[349] = unkR[13279] ;
unkR[350] = unkR[13274] ;
unkR[351] = unkR[13277] ;
unkR[352] = unkR[13280] ;
unkR[353] = unkR[13275] ;
unkR[354] = unkR[13278] ;
unkR[355] = unkR[13281] ;
unkR[519] = unkR[322] - unkR[15411] - unkR[701] ;
unkR[511] = unkR[507] ;
unkR[513] = unkR[508] ;
unkR[515] = unkR[509] ;
res[0]= evalNormResidueInternal(0,der[0],ldr[0]);
res[1]= evalNormResidueInternal(1,der[1],ldr[1]);
res[2]= evalNormResidueInternal(2,der[2],ldr[2]);
res[3]= evalNormResidueInternal(3,der[3],ldr[3]);
res[4]= evalNormResidueInternal(4,der[4],ldr[4]);
res[5]= evalNormResidueInternal(5,der[5],ldr[5]);
res[6]= evalNormResidueInternal(6,der[6],ldr[6]);
res[7]= evalNormResidueInternal(7,der[7],ldr[7]);
res[8]= evalNormResidueInternal(8,der[8],ldr[8]);
res[9]= evalNormResidueInternal(9,der[9],ldr[9]);
res[10]= evalNormResidueInternal(10,der[10],ldr[10]);
res[11]= evalNormResidueInternal(11,der[11],ldr[11]);
res[12]= evalNormResidueInternal(12,der[12],ldr[12]);
res[13]= evalNormResidueInternal(13,der[13],ldr[13]);
res[14]= evalNormResidueInternal(14,der[14],ldr[14]);
res[15]= evalNormResidueInternal(15,der[15],ldr[15]);
res[16]= evalNormResidueInternal(16,der[16],ldr[16]);
res[17]= evalNormResidueInternal(17,der[17],ldr[17]);
res[18]= evalNormResidueInternal(18,der[18],ldr[18]);
res[19]= evalNormResidueInternal(19,der[19],ldr[19]);
res[20]= evalNormResidueInternal(20,der[20],ldr[20]);
res[21]= evalNormResidueInternal(21,der[21],ldr[21]);
res[22]= evalNormResidueInternal(22,der[22],ldr[22]);
res[23]= evalNormResidueInternal(23,der[23],ldr[23]);
res[24]= evalNormResidueInternal(24,der[24],ldr[24]);
res[25]= evalNormResidueInternal(25,der[25],ldr[25]);
res[26]= evalNormResidueInternal(26,der[26],ldr[26]);

if( restartB )
     dcopy(27,der,ldr);
memcpy(this->res,res,27*sizeof(double));
printDbgInfoForModel(-1,false);
}

void SATELLITE__testGEO_default::checkAsserts(double *_time)
{
if ( warnProgramme() == false)
	return;
if(!(unkR[39] > unkR[42]))
	issueError(215,99,13,98,"CTRL_CompControllers.el",177,"Cntrl_PID1.","ASSERT failed: %s","Wrong limits for the controller");
if(!(unkR[40] > unkR[43]))
	issueError(215,99,13,98,"CTRL_CompControllers.el",177,"Cntrl_PID1.","ASSERT failed: %s","Wrong limits for the controller");
if(!(unkR[41] > unkR[44]))
	issueError(215,99,13,98,"CTRL_CompControllers.el",177,"Cntrl_PID1.","ASSERT failed: %s","Wrong limits for the controller");
}

void SATELLITE__testGEO_default::constraints( double *_time, double ev[],double dyn[],double ldr[]) 
{
    ev[0]= unkR[15092] - unkR[15093];
    ev[1]= unkR[15163] - unkR[15162];
    ev[2]= unkR[475] - unkR[476];
    ev[3]= unkR[593] - unkR[594];
    ev[4]= unkR[332] + unkR[333] + unkR[334] + unkR[335];
    ev[5]= unkR[141] - unkR[140];
    ev[6]= abs(unkR[85] - unkR[84]) - unkR[86];
    ev[7]= abs(unkR[85] - unkR[84]) - unkR[86];
    ev[8]= unkR[141] - unkR[140];
    ev[9]= abs(unkR[85] - unkR[84]) - 1.1 * unkR[86];
    ev[10]= unkI[3] - 1;
    ev[11]= unkI[3] - 1;
    ev[12]= unkI[3] - 1;
    ev[13]= unkI[3] - 1;
    ev[14]= unkI[3] - 1;
    ev[15]= unkI[3] - 1;
    ev[16]= unkI[3] - 1;
    ev[17]= unkI[3] - 1;
    ev[18]= unkR[45] - unkR[39];
    ev[19]= unkR[45] - unkR[42];
    ev[20]= unkI[0] - 1;
    ev[21]= unkR[48] - unkR[39];
    ev[22]= unkR[48] - unkR[42];
    ev[23]= unkR[46] - unkR[40];
    ev[24]= unkR[46] - unkR[43];
    ev[25]= unkI[0] - 1;
    ev[26]= unkR[49] - unkR[40];
    ev[27]= unkR[49] - unkR[43];
    ev[28]= unkR[47] - unkR[41];
    ev[29]= unkR[47] - unkR[44];
    ev[30]= unkI[0] - 1;
    ev[31]= unkR[50] - unkR[41];
    ev[32]= unkR[50] - unkR[44];
    ev[33]= unkI[4] - 1;
    ev[34]= unkI[5] - 1;
    ev[35]= unkI[6] - 1;
    ev[36]= unkI[7] - 1;
    ev[37]= unkI[8] - 1;
    ev[38]= unkI[9] - 1;
    ev[39]= unkI[10] - 1;
    ev[40]= unkI[11] - 1;
    ev[41]= unkI[12] - 1;
    ev[42]= unkI[13] - 1;
    ev[43]= unkI[14] - 1;
    ev[44]= unkI[15] - 1;
    ev[45]= unkI[16] - 1;
    ev[46]= unkI[17] - 1;
    ev[47]= unkI[18] - 1;
    ev[48]= unkI[2] - 1;
    ev[49]= unkI[2] - 2;
    ev[50]= unkI[2] - 1;
    ev[51]= unkI[2] - 2;
    ev[52]= unkI[2] - 1;
    ev[53]= unkI[2] - 2;
    ev[54]= unkR[384];
    ev[55]= unkR[181];
    ev[56]= unkR[180];
    ev[57]= unkR[181];
    ev[58]= unkR[180];
    ev[59]= unkR[181];
    ev[60]= unkR[180];
    ev[61]= unkR[181];
    ev[62]= unkR[180];
    ev[63]= A37bff279528b6317bb6373d02308ca80(&unkR[60]);
    ev[64]= A37bff279528b6317bb6373d02308ca80(&unkR[60]);
    ev[65]= A37bff279528b6317bb6373d02308ca80(&unkR[60]);
    ev[66]= A37bff279528b6317bb6373d02308ca80(&unkR[14808]);
    ev[67]= A37bff279528b6317bb6373d02308ca80(&unkR[14859]);
    ev[68]= A37bff279528b6317bb6373d02308ca80(&unkR[14808]);
    ev[69]= A37bff279528b6317bb6373d02308ca80(&unkR[14859]);
    ev[70]= A37bff279528b6317bb6373d02308ca80(&unkR[14808]);
    ev[71]= A37bff279528b6317bb6373d02308ca80(&unkR[14859]);
}

void SATELLITE__testGEO_default::evalWhen(double *_time, bool w[],bool cont[] )
{
     w[0] = cont[0] ;     w[1] = cont[1] ;     w[2] = cont[2] ;     w[3] = cont[3] ;     w[4] = cont[4] ;     w[5] = cont[5] ;     w[6] = cont[6] ;     w[7] = cont[7]  || cont[8] ;     w[8] = cont[9] ;}

void SATELLITE__testGEO_default::executeWhen(double *_time,  int index )
{
  if ( index == 0 )
  {
	PRINT(" Thrusters Init or Data Changed ") ;
	unkI[34] = 1 ;
	while ( unkI[34] <= cteI[24] ) {
	unkR[15164+(unkI[34]-1)] = unkR[15181+(unkI[34]-1)] * unkR[14922+(unkI[34]-1)] ;
	A0daea1d810ae4f638e20557d22603a2f(17, &unkR[14939], &unkR[15198], unkI[34]) ;
	unkR[15448+(unkI[34]-1)] = _div( -unkR[14922+(unkI[34]-1)]/9.80665 , unkR[15094+(unkI[34]-1)],"Thrusters1.Isp[_vi12]") ;
	unkR[15414+(unkI[34]-1)+17*1] = _div( unkR[15448+(unkI[34]-1)] * unkR[15465+(unkI[34]-1)] , (1. + unkR[15465+(unkI[34]-1)]),"1. + Thrusters1.rm[_vi12]") ;
	unkR[15414+(unkI[34]-1)+17*0] = unkR[15448+(unkI[34]-1)] - unkR[15414+(unkI[34]-1)+17*1] ;
	A7ad3331810bc4d38a98d3684189d2da1(cteI[24], &unkR[15041], &unkR[15351], unkI[34], "Init Thrusters") ;
	unkI[33] = 0 ;
	unkI[41] = 1 ;
	while ( unkI[41] <= setofSize(&typ[5]) ) {
	unkI[50] = setofElem(&typ[5], unkI[41]) ;
	unkI[33] = unkI[33] + 1 ;
	unkR[14990+(unkI[41]-1)+3*(unkI[34]-1)] = unkR[15351+(unkI[33]-1)+3*(unkI[34]-1)] * unkR[14922+(unkI[34]-1)] ;
	unkR[15484] = 0 ;
	unkI[51] = 1 ;
	while ( unkI[51] <= 3 ) {
	unkR[15484] += unkR[15198+(unkI[51]-1)+3*(unkI[33]-1)+9*(unkI[34]-1)] * unkR[15351+(unkI[51]-1)+3*(unkI[34]-1)] ;
	unkI[51] += 1 ;
	}
	unkR[15111+(unkI[41]-1)+3*(unkI[34]-1)] = unkR[15484] * unkR[14922+(unkI[34]-1)] ;
	unkI[41] += 1 ;
	}
	unkI[34] += 1 ;
	}
	unkR[15093] = unkR[15092] ;
	m_needSatisfyResidues = true;
	return;
  }

  if ( index == 1 )
  {
	unkS[1] = A718f4ee7a90c61514c3a9ceddb91063c(cteI[24], &unkR[443]) ;
	unkR[15163] = unkR[15162] ;
	m_needSatisfyResidues = true;
	return;
  }

  if ( index == 2 )
  {
	PRINT(" ReactionWheels Init or Data Changed ") ;
	unkI[53] = 1 ;
	while ( unkI[53] <= 4 ) {
	unkI[1] = 0 ;
	A7ad3331810bc4d38a98d3684189d2da1(cteI[12], &unkR[459], &unkR[480], unkI[53], "Init ReactionWheels") ;
	unkI[54] = 1 ;
	while ( unkI[54] <= setofSize(&typ[5]) ) {
	unkI[55] = setofElem(&typ[5], unkI[54]) ;
	unkI[1] = unkI[1] + 1 ;
	unkR[492+(unkI[54]-1)+3*(unkI[53]-1)] = unkR[480+(unkI[1]-1)+3*(unkI[53]-1)] ;
	unkI[54] += 1 ;
	}
	unkI[53] += 1 ;
	}
	unkR[476] = unkR[475] ;
	m_needSatisfyResidues = true;
	return;
  }

  if ( index == 3 )
  {
	PRINT(" SolarArrays Init or Data Changed ") ;
	unkI[56] = 1 ;
	while ( unkI[56] <= cteI[16] ) {
	A7ad3331810bc4d38a98d3684189d2da1(cteI[16], &unkR[614], &unkR[680], unkI[56], "Init canonicalNormalToCells SolarArrays") ;
	A7ad3331810bc4d38a98d3684189d2da1(cteI[16], &unkR[580], &unkR[662], unkI[56], "Init Forient SolarArrays") ;
	A0daea1d810ae4f638e20557d22603a2f(cteI[16], &unkR[662], &unkR[626], unkI[56]) ;
	A0daea1d810ae4f638e20557d22603a2f(cteI[16], &unkR[562], &unkR[644], unkI[56]) ;
	unkI[56] += 1 ;
	}
	unkR[594] = unkR[593] ;
	m_needSatisfyResidues = true;
	return;
  }

  if ( index == 4 )
  {
	unkR[15485] = 0 ;
	unkI[61] = 1 ;
	while ( unkI[61] <= cteI[5] ) {
	unkR[15485] += unkR[332+(unkI[61]-1)] ;
	unkI[61] += 1 ;
	}
	unkR[115] = unkR[15485] ;
	unkR[15486] = 0 ;
	unkI[62] = 1 ;
	while ( unkI[62] <= cteI[5] ) {
	unkR[15486] += unkR[332+(unkI[62]-1)] ;
	unkI[62] += 1 ;
	}
	dyn[9] = unkR[386] + unkR[15486] ;
	unkR[141] = 0 ;
	m_needSatisfyResidues = true;
	return;
  }

  if ( index == 5 )
  {
	PRINT(" Frame Init or Data Changed ") ;
	unkR[15482] = 0 ;
	unkI[63] = 1 ;
	while ( unkI[63] <= cteI[5] ) {
	unkR[15482] += unkR[332+(unkI[63]-1)] ;
	unkI[63] += 1 ;
	}
	unkR[115] = unkR[15482] ;
	unkI[64] = 1 ;
	while ( unkI[64] <= setofSize(&typ[5]) ) {
	unkI[65] = setofElem(&typ[5], unkI[64]) ;
	unkR[182+(unkI[64]-1)] = _div( 1. , dyn[9],"Frame1.mass") * (unkR[386] * unkR[185+(unkI[64]-1)] + unkR[115] * unkR[377+(unkI[64]-1)]) ;
	unkR[289+(unkI[64]-1)] = A01bfbe1edd393b2c1ca09d44c931495b(unkR[394+(unkI[64]-1)]) ;
	unkI[64] += 1 ;
	}
	A0d2cf00462b54839a48b1dc17df854a3(&unkR[142], &unkR[145], &unkR[131]) ;
	A34abf7295c90f8265a8f8233dbb2a37e(-1, &unkR[185], 1, &unkR[182], 0, &unkR[87]) ;
	A258ec9a890dd211ddeef7f6b9d43979a(&unkR[131], &unkR[87], unkR[386], &unkR[122], 1) ;
	unkR[149] = Abae57cbe2695639296453083e5154d0e(unkS[0], &unkR[106]) ;
	Afcc4eadac593fa8a73a0762b2622034c(unkR[149], &unkR[237], &unkR[241]) ;
	A76451021569370217d096290951c830e(unkR[296], unkR[295], unkR[232], unkR[385], unkR[389], unkR[192], &unkR[234], &unkR[286], &unkR[302]) ;
	if( unkR[302] != 0 ) {
	PRINT(" Error reported in Frame Init from ParametersToCartesian ") ;
	}
	unkI[66] = 1 ;
	while ( unkI[66] <= setofSize(&typ[2]) ) {
	unkI[67] = setofElem(&typ[2], unkI[66]) ;
	unkR[228+(unkI[66]-1)] = unkR[234+(unkI[66]-1)] ;
	unkR[261+(unkI[66]-1)] = unkR[286+(unkI[66]-1)] ;
	unkI[66] += 1 ;
	}
	A706849dac78113deb5787361fa82321d(A01bfbe1edd393b2c1ca09d44c931495b(unkR[232]), A01bfbe1edd393b2c1ca09d44c931495b(unkR[385]), A01bfbe1edd393b2c1ca09d44c931495b(unkR[389] + unkR[192]), &unkR[216]) ;
	Afc0207c8f1b43d38f6f00d2b331dc720(A01bfbe1edd393b2c1ca09d44c931495b(unkR[393]), A01bfbe1edd393b2c1ca09d44c931495b(unkR[406]), A01bfbe1edd393b2c1ca09d44c931495b(unkR[391]), &unkR[224]) ;
	A56574614adcf365a4620cd0f26dcfbe7(&unkR[216], &unkR[224], &unkR[212], " operation Qorb,Qsat ") ;
	A5081ea99bec2b8ca0ea52666ac8f7f22(&unkR[212], &unkR[196]) ;
	A4734c95e5416810119e160e39b7d4cc3(&unkR[196], &unkR[159]) ;
	A2e8f4393cd4e00e633246fcac8ad105e(&unkR[234], &unkR[286], &unkR[329]) ;
	unkI[68] = 1 ;
	while ( unkI[68] <= setofSize(&typ[2]) ) {
	unkI[69] = setofElem(&typ[2], unkI[68]) ;
	unkR[325+(unkI[68]-1)] = unkR[329+(unkI[68]-1)] ;
	unkI[68] += 1 ;
	}
	unkR[233] = A37bff279528b6317bb6373d02308ca80(&unkR[228]) ;
	unkR[328] = A37bff279528b6317bb6373d02308ca80(&unkR[329]) ;
	unkR[141] = unkR[140] ;
	m_needSatisfyResidues = true;
	return;
  }

  if ( index == 6 )
  {
	unkI[70] = 1 ;
	while ( unkI[70] <= setofSize(&typ[5]) ) {
	unkI[71] = setofElem(&typ[5], unkI[70]) ;
	unkR[182+(unkI[70]-1)] = _div( 1. , dyn[9],"Frame1.mass") * (unkR[386] * unkR[185+(unkI[70]-1)] + unkR[115] * unkR[377+(unkI[70]-1)]) ;
	unkI[70] += 1 ;
	}
	addTimedAssignR(&unkR[85], unkR[84], (*_time)+0 ) ;
	A673ab8dd8d269cc1158334fced60d24c(&unkR[131], &unkR[185], unkR[386], &unkR[368], &unkR[377], unkR[115], &unkR[182], &unkR[122]) ;
	m_needSatisfyResidues = true;
	return;
  }

  if ( index == 7 )
  {
	PRINT(" COM or Inertia or fluid Mass Changed. Flag changes from " + getValueAsString("Frame1.COMFlag0") + " to " + getValueAsString("Frame1.COMFlag")) ;
	unkI[72] = 1 ;
	while ( unkI[72] <= setofSize(&typ[5]) ) {
	unkI[73] = setofElem(&typ[5], unkI[72]) ;
	unkR[182+(unkI[72]-1)] = _div( 1. , dyn[9],"Frame1.mass") * (unkR[386] * unkR[185+(unkI[72]-1)] + unkR[115] * unkR[377+(unkI[72]-1)]) ;
	unkI[72] += 1 ;
	}
	unkR[85] = unkR[84] ;
	A673ab8dd8d269cc1158334fced60d24c(&unkR[131], &unkR[185], unkR[386], &unkR[368], &unkR[377], unkR[115], &unkR[182], &unkR[122]) ;
	m_needSatisfyResidues = true;
	return;
  }

  if ( index == 8 )
  {
	PRINT(" COM or Inertia or fluid Mass Changed. Flag changes from " + getValueAsString("Frame1.COMFlag0") + " to " + getValueAsString("Frame1.COMFlag") + "        1.1COMaccuracy ") ;
	unkI[74] = 1 ;
	while ( unkI[74] <= setofSize(&typ[5]) ) {
	unkI[75] = setofElem(&typ[5], unkI[74]) ;
	unkR[182+(unkI[74]-1)] = _div( 1. , dyn[9],"Frame1.mass") * (unkR[386] * unkR[185+(unkI[74]-1)] + unkR[115] * unkR[377+(unkI[74]-1)]) ;
	unkI[74] += 1 ;
	}
	addTimedAssignR(&unkR[85], unkR[84], (*_time)+0 ) ;
	A673ab8dd8d269cc1158334fced60d24c(&unkR[131], &unkR[185], unkR[386], &unkR[368], &unkR[377], unkR[115], &unkR[182], &unkR[122]) ;
	m_needSatisfyResidues = true;
	return;
  }

}

void SATELLITE__testGEO_default::evalZones( double *_time,  int branchZone[],bool cont[] )
{
     branchZone[0] = (cont[10] ) ? 0 : 1;
     branchZone[1] = (cont[11] ) ? 0 : 1;
     branchZone[2] = (cont[12] ) ? 0 : 1;
     branchZone[3] = (cont[13] ) ? 0 : 1;
     branchZone[4] = (cont[14] ) ? 0 : 1;
     branchZone[5] = (cont[15] ) ? 0 : 1;
     branchZone[6] = (cont[16] ) ? 0 : 1;
     branchZone[7] = (cont[17] ) ? 0 : 1;
     branchZone[8] = (cont[18] ) ? 0 : (cont[19] ) ? 1 : 2;
     branchZone[9] = (cont[20] ) ? 0 : 1;
     branchZone[10] = (cont[21] ) ? 0 : (cont[22] ) ? 1 : 2;
     branchZone[11] = (cont[23] ) ? 0 : (cont[24] ) ? 1 : 2;
     branchZone[12] = (cont[25] ) ? 0 : 1;
     branchZone[13] = (cont[26] ) ? 0 : (cont[27] ) ? 1 : 2;
     branchZone[14] = (cont[28] ) ? 0 : (cont[29] ) ? 1 : 2;
     branchZone[15] = (cont[30] ) ? 0 : 1;
     branchZone[16] = (cont[31] ) ? 0 : (cont[32] ) ? 1 : 2;
     branchZone[17] = (cont[33] ) ? 0 : 1;
     branchZone[18] = (cont[34] ) ? 0 : 1;
     branchZone[19] = (cont[35] ) ? 0 : 1;
     branchZone[20] = (cont[36] ) ? 0 : 1;
     branchZone[21] = (cont[37] ) ? 0 : 1;
     branchZone[22] = (cont[38] ) ? 0 : 1;
     branchZone[23] = (cont[39] ) ? 0 : 1;
     branchZone[24] = (cont[40] ) ? 0 : 1;
     branchZone[25] = (cont[41] ) ? 0 : 1;
     branchZone[26] = (cont[42] ) ? 0 : 1;
     branchZone[27] = (cont[43] ) ? 0 : 1;
     branchZone[28] = (cont[44] ) ? 0 : 1;
     branchZone[29] = (cont[45] ) ? 0 : 1;
     branchZone[30] = (cont[46] ) ? 0 : 1;
     branchZone[31] = (cont[47] ) ? 0 : 1;
     branchZone[32] = (cont[48] ) ? 0 : (cont[49] ) ? 1 : 2;
     branchZone[33] = (cont[50] ) ? 0 : (cont[51] ) ? 1 : 2;
     branchZone[34] = (cont[52] ) ? 0 : (cont[53] ) ? 1 : 2;
     branchZone[35] = (cont[54] ) ? 0 : 1;
     branchZone[36] = (cont[55]  && cont[56] ) ? 0 : 1;
     branchZone[37] = (cont[57]  && cont[58] ) ? 0 : 1;
     branchZone[38] = (cont[59]  && cont[60] ) ? 0 : 1;
     branchZone[39] = (cont[61]  && cont[62] ) ? 0 : 1;
     branchZone[40] = (cont[63] ) ? 0 : 1;
     branchZone[41] = (cont[64] ) ? 0 : 1;
     branchZone[42] = (cont[65] ) ? 0 : 1;
     branchZone[43] = (cont[66] ) ? 0 : (cont[67] ) ? 1 : 2;
     branchZone[44] = (cont[68] ) ? 0 : (cont[69] ) ? 1 : 2;
     branchZone[45] = (cont[70] ) ? 0 : (cont[71] ) ? 1 : 2;
}

INTEG_simula::t_initEvent* SATELLITE__testGEO_default::initEvents(int& nEvents,int& nWhen,int& nZones,         
	int& nConstraints, const char**& whenTxt,const char**& zoneTxt,int *&zoneTxtIndex)
{
	nEvents= 72 ;
	nConstraints= 201;
	nWhen= 9;
	nZones= 46;
	static const char* whenTxtTable[9]= { "",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		""};
	whenTxt= whenTxtTable;

	static const char* zoneTxtTable[] = { "SolarArrays1.FlagEclipse","OTHERS",
	"SolarArrays1.FlagEclipse","OTHERS",
	"SolarArrays1.FlagEclipse","OTHERS",
	"SolarArrays1.FlagEclipse","OTHERS",
	"SolarArrays1.FlagEclipse","OTHERS",
	"SolarArrays1.FlagEclipse","OTHERS",
	"SolarArrays1.FlagEclipse","OTHERS",
	"SolarArrays1.FlagEclipse","OTHERS",
	"Cntrl_PID1.v[1] > Cntrl_PID1.u_max[1]","Cntrl_PID1.v[1] < Cntrl_PID1.u_min[1]","OTHERS",
	"Cntrl_PID1.end_pos == end_I","OTHERS",
	"Cntrl_PID1.vi[1] > Cntrl_PID1.u_max[1]","Cntrl_PID1.vi[1] < Cntrl_PID1.u_min[1]","OTHERS",
	"Cntrl_PID1.v[2] > Cntrl_PID1.u_max[2]","Cntrl_PID1.v[2] < Cntrl_PID1.u_min[2]","OTHERS",
	"Cntrl_PID1.end_pos == end_I","OTHERS",
	"Cntrl_PID1.vi[2] > Cntrl_PID1.u_max[2]","Cntrl_PID1.vi[2] < Cntrl_PID1.u_min[2]","OTHERS",
	"Cntrl_PID1.v[3] > Cntrl_PID1.u_max[3]","Cntrl_PID1.v[3] < Cntrl_PID1.u_min[3]","OTHERS",
	"Cntrl_PID1.end_pos == end_I","OTHERS",
	"Cntrl_PID1.vi[3] > Cntrl_PID1.u_max[3]","Cntrl_PID1.vi[3] < Cntrl_PID1.u_min[3]","OTHERS",
	"TC_AocsThrusters.s_in.signal[01]","OTHERS",
	"TC_AocsThrusters.s_in.signal[02]","OTHERS",
	"TC_AocsThrusters.s_in.signal[03]","OTHERS",
	"TC_AocsThrusters.s_in.signal[04]","OTHERS",
	"TC_AocsThrusters.s_in.signal[05]","OTHERS",
	"TC_AocsThrusters.s_in.signal[06]","OTHERS",
	"TC_AocsThrusters.s_in.signal[07]","OTHERS",
	"TC_AocsThrusters.s_in.signal[08]","OTHERS",
	"TC_AocsThrusters.s_in.signal[09]","OTHERS",
	"TC_AocsThrusters.s_in.signal[10]","OTHERS",
	"TC_AocsThrusters.s_in.signal[11]","OTHERS",
	"TC_AocsThrusters.s_in.signal[12]","OTHERS",
	"TC_AocsThrusters.s_in.signal[13]","OTHERS",
	"TC_AocsThrusters.s_in.signal[14]","OTHERS",
	"TC_AocsThrusters.s_in.signal[15]","OTHERS",
	"SensorAttitude1.Measure == Quaternion","SensorAttitude1.Measure == Cardan","OTHERS",
	"SensorAttitude1.Measure == Quaternion","SensorAttitude1.Measure == Cardan","OTHERS",
	"SensorAttitude1.Measure == Quaternion","SensorAttitude1.Measure == Cardan","OTHERS",
	"Frame1.inc == 0","OTHERS",
	"Frame1.NOmeg == 0 AND Frame1.NAccel == 0","OTHERS",
	"Frame1.NOmeg == 0 AND Frame1.NAccel == 0","OTHERS",
	"Frame1.NOmeg == 0 AND Frame1.NAccel == 0","OTHERS",
	"Frame1.NOmeg == 0 AND Frame1.NAccel == 0","OTHERS",
	"SATELLITE.Norm(Tanks1.S.Accel) != 0","OTHERS",
	"SATELLITE.Norm(Tanks1.S.Accel) != 0","OTHERS",
	"SATELLITE.Norm(Tanks1.S.Accel) != 0","OTHERS",
	"SATELLITE.Norm(Tanks1.OmegaYvalid) != 0","SATELLITE.Norm(Tanks1.XOmegaY) != 0","OTHERS",
	"SATELLITE.Norm(Tanks1.OmegaYvalid) != 0","SATELLITE.Norm(Tanks1.XOmegaY) != 0","OTHERS",
	"SATELLITE.Norm(Tanks1.OmegaYvalid) != 0","SATELLITE.Norm(Tanks1.XOmegaY) != 0","OTHERS"};
	static int zoneTxtIndexTable[] = { 0,2,4,6,8,10,12,14,16,19,21,24,27,29,
32,35,37,40,42,44,46,48,50,52,54,56,58,60,
62,64,66,68,70,73,76,79,81,83,85,87,89,91,
93,95,98,101 };
	zoneTxt= zoneTxtTable;
	zoneTxtIndex= zoneTxtIndexTable;

	static t_initEvent evs[72]= { { WHEN,NOT_EQ_OP,0,0,"Thrusters1.InputDataChangedFlag != Thrusters1.InputDataChangedFlag0"},{ WHEN,NOT_EQ_OP,0,1,"Thrusters1.OnOffChangedFlag0 != Thrusters1.OnOffChangedFlag"},{ WHEN,NOT_EQ_OP,0,2,"ReactionWheels1.InputDataChangedFlag != ReactionWheels1.InputDataChangedFlag0"},{ WHEN,NOT_EQ_OP,0,3,"SolarArrays1.InputDataChangedFlag != SolarArrays1.InputDataChangedFlag0"},{ WHEN,NOT_EQ_OP,0,4,"(Frame1.if.FluidMassComponent[1] + Frame1.if.FluidMassComponent[2] + Frame1.if.FluidMassComponent[3] + Frame1.if.FluidMassComponent[4]) != 0"},{ WHEN,NOT_EQ_OP,0,5,"Frame1.InputDataChangedFlag0 != Frame1.InputDataChangedFlag"}
,{ WHEN,LT_OP,0,6,"abs(Frame1.COMFlag0 - Frame1.COMFlag) < Frame1.COMaccuracy"},{ WHEN,GT_OP,0,7,"abs(Frame1.COMFlag0 - Frame1.COMFlag) > Frame1.COMaccuracy"},{ WHEN,NOT_EQ_OP,0,7,"Frame1.InputDataChangedFlag0 != Frame1.InputDataChangedFlag"},{ WHEN,GT_OP,0,8,"abs(Frame1.COMFlag0 - Frame1.COMFlag) > (1.1 * Frame1.COMaccuracy)"},{ ZONE,EQ_OP,0,0,"SolarArrays1.FlagEclipse"}
,{ ZONE,EQ_OP,0,0,"SolarArrays1.FlagEclipse"},{ ZONE,EQ_OP,0,0,"SolarArrays1.FlagEclipse"},{ ZONE,EQ_OP,0,0,"SolarArrays1.FlagEclipse"},{ ZONE,EQ_OP,0,0,"SolarArrays1.FlagEclipse"},{ ZONE,EQ_OP,0,0,"SolarArrays1.FlagEclipse"}
,{ ZONE,EQ_OP,0,0,"SolarArrays1.FlagEclipse"},{ ZONE,EQ_OP,0,0,"SolarArrays1.FlagEclipse"},{ ZONE,GT_OP,0,0,"Cntrl_PID1.v[1] > Cntrl_PID1.u_max[1]"},{ ZONE,LT_OP,0,0,"Cntrl_PID1.v[1] < Cntrl_PID1.u_min[1]"},{ ZONE,EQ_OP,0,0,"Cntrl_PID1.end_pos == end_I"}
,{ ZONE,GT_OP,0,0,"Cntrl_PID1.vi[1] > Cntrl_PID1.u_max[1]"},{ ZONE,LT_OP,0,0,"Cntrl_PID1.vi[1] < Cntrl_PID1.u_min[1]"},{ ZONE,GT_OP,0,0,"Cntrl_PID1.v[2] > Cntrl_PID1.u_max[2]"},{ ZONE,LT_OP,0,0,"Cntrl_PID1.v[2] < Cntrl_PID1.u_min[2]"},{ ZONE,EQ_OP,0,0,"Cntrl_PID1.end_pos == end_I"}
,{ ZONE,GT_OP,0,0,"Cntrl_PID1.vi[2] > Cntrl_PID1.u_max[2]"},{ ZONE,LT_OP,0,0,"Cntrl_PID1.vi[2] < Cntrl_PID1.u_min[2]"},{ ZONE,GT_OP,0,0,"Cntrl_PID1.v[3] > Cntrl_PID1.u_max[3]"},{ ZONE,LT_OP,0,0,"Cntrl_PID1.v[3] < Cntrl_PID1.u_min[3]"},{ ZONE,EQ_OP,0,0,"Cntrl_PID1.end_pos == end_I"}
,{ ZONE,GT_OP,0,0,"Cntrl_PID1.vi[3] > Cntrl_PID1.u_max[3]"},{ ZONE,LT_OP,0,0,"Cntrl_PID1.vi[3] < Cntrl_PID1.u_min[3]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[01]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[02]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[03]"}
,{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[04]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[05]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[06]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[07]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[08]"}
,{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[09]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[10]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[11]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[12]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[13]"}
,{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[14]"},{ ZONE,EQ_OP,0,0,"TC_AocsThrusters.s_in.signal[15]"},{ ZONE,EQ_OP,0,0,"SensorAttitude1.Measure == Quaternion"},{ ZONE,EQ_OP,0,0,"SensorAttitude1.Measure == Cardan"},{ ZONE,EQ_OP,0,0,"SensorAttitude1.Measure == Quaternion"}
,{ ZONE,EQ_OP,0,0,"SensorAttitude1.Measure == Cardan"},{ ZONE,EQ_OP,0,0,"SensorAttitude1.Measure == Quaternion"},{ ZONE,EQ_OP,0,0,"SensorAttitude1.Measure == Cardan"},{ ZONE,EQ_OP,0,0,"Frame1.inc == 0"},{ ZONE,EQ_OP,0,0,"Frame1.NOmeg == 0"}
,{ ZONE,EQ_OP,0,0,"Frame1.NAccel == 0"},{ ZONE,EQ_OP,0,0,"Frame1.NOmeg == 0"},{ ZONE,EQ_OP,0,0,"Frame1.NAccel == 0"},{ ZONE,EQ_OP,0,0,"Frame1.NOmeg == 0"},{ ZONE,EQ_OP,0,0,"Frame1.NAccel == 0"}
,{ ZONE,EQ_OP,0,0,"Frame1.NOmeg == 0"},{ ZONE,EQ_OP,0,0,"Frame1.NAccel == 0"},{ ZONE,NOT_EQ_OP,1e-010,0,"SATELLITE.Norm(SolarArrays1.S.Accel) != 0"},{ ZONE,NOT_EQ_OP,1e-010,0,"SATELLITE.Norm(SolarArrays1.S.Accel) != 0"},{ ZONE,NOT_EQ_OP,1e-010,0,"SATELLITE.Norm(SolarArrays1.S.Accel) != 0"}
,{ ZONE,NOT_EQ_OP,1e-010,0,"SATELLITE.Norm(Tanks1.OmegaYvalid) != 0"},{ ZONE,NOT_EQ_OP,0,0,"SATELLITE.Norm(Tanks1.XOmegaY) != 0"},{ ZONE,NOT_EQ_OP,1e-010,0,"SATELLITE.Norm(Tanks1.OmegaYvalid) != 0"},{ ZONE,NOT_EQ_OP,0,0,"SATELLITE.Norm(Tanks1.XOmegaY) != 0"},{ ZONE,NOT_EQ_OP,1e-010,0,"SATELLITE.Norm(Tanks1.OmegaYvalid) != 0"}
,{ ZONE,NOT_EQ_OP,0,0,"SATELLITE.Norm(Tanks1.XOmegaY) != 0"}};
	return evs;
};

void SATELLITE__testGEO_default::initDelays()
{
}

void SATELLITE__testGEO_default::extractSymbols()
{
}

SIMULA_EXPORT_C INTEG_simula* create_SATELLITE__testGEO_default(const char *name=NULL,const char *dirInstall=NULL)
{
	return new SATELLITE__testGEO_default(name,dirInstall);
}
SIMULA_EXPORT_C void delete_SATELLITE__testGEO_default(INTEG_simula *obj,const char *name=NULL)
{
	if ( obj )
		{obj->deleteManager(name);
		delete obj;}
}

#ifndef SIMULA_NOT_USE_METAINFO
SIMULA_EXPORT_C void getInformationPartition(char *libraryName, char *componentName, char *partitionName, char *symbolTableFilename, bool& isDebug)
{
	sprintf(libraryName,"%s","SATELLITE");
	sprintf(componentName,"%s","testGEO");
	sprintf(partitionName,"%s","default");
	sprintf(symbolTableFilename,"%s","SATELLITE.test+g+e+o.default");
	isDebug= false;
	return;
}
#endif //SIMULA_NOT_USE_METAINFO

#endif 

